2011-03-04 120 views
0

我有以下XSLT:XSLT转换问题

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> 
<xsl:template match="POL"> 
    <sql:SQLXML> 
     <sql:Execute as="Test" into="Test"> 
      <sql:SQL> 
       select trans_type, trans_datetime, replace(convert(varchar, trans_datetime, 114), ':', '_') as trans_time, application_data from Acord_Transaction where transaction_id= 
       <xsl:value-of select="TRANSACTIONID" /> 
      </sql:SQL> 
     </sql:Execute> 
     <xsl:if test="string-length(APPLICATIONDATA/parameters/noteid) &gt; 0"> 
      <sql:Execute as="newnote" into="newnotes"> 
       <sql:SQL> 
        select * from notes where note_id= 
        <xsl:value-of select="APPLICATIONDATA/parameters/noteid" /> 
        AND added_date=' 
        <xsl:value-of select="APPLICATIONDATA/parameters/addeddate" /> 
        ' 
       </sql:SQL> 
      </sql:Execute> 
     </xsl:if> 
</xsl:template> 

的事情是从数据库应用程序数据字段存储XML字符串字段。在SQL后:执行完成时,在输出<和>获取与& lt和& GT替换

我需要一个模板的sql后应用:执行这样的执行的结果是一个有效的XML,所以我可以从xsl破坏xpath:如果它。

欣赏阿努帮助

+0

您想要某种类型的XML解析。这将是XSLT 3.0的一个特性,至今仍处于工作草案状态。 – 2011-03-04 18:48:21

回答

0

XSLT运行在二维树形结构(XML)。

你在数据库中有一个严重破坏标记,已被平化为一维字符串。

这个野蛮行为必须颠倒,通过转义转义字符,然后恢复的XML可以像平常一样用XSLT处理。

可以使用XSLT 2.0来完成本身的转义,但绝对没有迫切理由为什么要使用XSLT。

0

不幸的是,不是直线上升的XSLT来做到这一点可靠的或内置方式。如果可能的话,您不应该将XML数据存储在数据库中,标记以这种方式转义。请参阅:XSL character escape problem