2

我有一个将一种 XML 格式转换为另一种格式的 XSL。在输入 XML 中,我有一个具有以下值的节点 - 如果我们替换 < 这实际上是一个 XML 字符串 <(小于)例如

<otherInfo>&amp;lt;Paragraph&amp;gt;&amp;lt;Title&amp;gt;&amp;lt;!CDATA[Pour les nuits du 2012-10-01 - 2012-10-30]]&amp;gt;&amp;lt;/Title&amp;gt;&amp;lt;Text&amp;gt;&amp;lt;![CDATA[TAXES INCLUSES.]]&amp;gt;&amp;lt;/Text&amp;gt;&amp;lt;/Paragraph&amp;gt;</otherInfo>

我希望将 otherInfo 的内容作为输出 XML 中的 XML 节点。

如果我执行 xsl:valueof select="otherInfo",我不会将它作为 XML 节点 - 它只是作为文本输出。如何使 XSL 将 otherInfo 的内容输出为 XML 节点?

4

2 回答 2

2

您要么需要实现一个用 XSLT 编写的 XML 解析器,要么调用一个扩展函数,要么等待 XSLT 3.0,那里可能有一个标准parse-xml()函数。

于 2012-10-15T03:32:49.483 回答
0

如果我理解你的问题是正确的......

你可以尝试这样的事情(代码未测试)

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:exslt="http://exslt.org/common" version="1.0">

<xsl:template match="*">
    <xsl:variable name="xml-string">
    <Paragraph>
        <Title>
            <!CDATA[Pour les nuits du 2012-10-01 - 2012-10-30]]>
        </Title>
        <Text>
            <![CDATA[TAXES INCLUSES.]]>
        </Text>
    </Paragraph>
</xsl:variable>

    <xsl:variable name="xmlnode" select="exslt:node-set($xml-string)"/>

    Title is <xsl:value-of select="$xmlnode//Title"/>
</xsl:template>

于 2012-10-15T04:02:30.647 回答