是否可以在XSLT中将整个源XML作为CDTA获取?
我想在XSLT中得到这个。这可能吗 源XML是否可以在XSLT中将整个源XML作为CDTA获取?,xml,xslt,Xml,Xslt,我想在XSLT中得到这个。这可能吗 源XML <Parent> <Child></Child> <Child></Child> <Child></Child> <Child></Child> </Parent> 输出XML <Issue> <Node1>Something happening here</Node1
<Parent>
<Child></Child>
<Child></Child>
<Child></Child>
<Child></Child>
</Parent>
输出XML
<Issue>
<Node1>Something happening here</Node1>
<Node2>Something happening here</Node2>
<Node3><![CDATA[
<Parent>
<Child></Child>
<Child></Child>
<Child></Child>
<Child></Child>
</Parent>
]]>
</Issue>
这里发生了什么事
这里发生了什么事
]]>
我想要整个输入xml作为
这可能吗
我的XSLT如下所示(代码片段)
....
谁能帮我解决这个问题?我在XSLT1.0中使用XSLT1.0,您可以尝试这种肮脏的技术(不保证有效):
![CDATA[
]]>
我之所以说“脏”是因为禁用输出转义
通常意味着你试图用锤子来拧螺丝;i、 e.你使用工具的目的不是为了服务。它不能保证工作,特别是当XSLT处理器不能控制序列化时
你也许可以避免这种肮脏的技术。我首先会问,为什么输出XML应该在CDATA部分?几乎可以肯定,CDATA需求背后有一个不同的需求(否则CDATA需求是任意的)
也许真正的需求是您希望在输出中转义输入XML,以便接下来读取它的XML解析器将其作为文本读取,而不是将其解析为树
归功于:在XSLT1.0中,您可以尝试这种肮脏的技术(不保证有效):
![CDATA[
]]>
我之所以说“脏”是因为禁用输出转义
通常意味着你试图用锤子来拧螺丝;i、 e.你使用工具的目的不是为了服务。它不能保证工作,特别是当XSLT处理器不能控制序列化时
你也许可以避免这种肮脏的技术。我首先会问,为什么输出XML应该在CDATA部分?几乎可以肯定,CDATA需求背后有一个不同的需求(否则CDATA需求是任意的)
也许真正的需求是您希望在输出中转义输入XML,以便接下来读取它的XML解析器将其作为文本读取,而不是将其解析为树
归功于:您使用的是哪个XSLT处理器?在XSLT2.0中,您可以使用
cdata节元素=“Node3”
,但您提到您使用的是1.0。在这种情况下,我认为您必须使用特定于处理器的扩展。javax.xml.transform.transformer您使用的是哪个XSLT处理器?在XSLT2.0中,您可以使用cdata节元素=“Node3”
,但您提到您使用的是1.0。在这种情况下,我认为您必须使用特定于处理器的扩展。javax.xml.transform.TransformerHanks。实际上,这是有效的![CDATA[]
出于历史原因,我需要保存输入xml并存储在dbOops中,感谢您对的更正。好的,我想序列化程序可以合法地作为
转义,即使它不必转义。d-o-e(通常)会阻止这种情况。谢谢。实际上,这是有效的![CDATA[]
出于历史原因,我需要保存输入xml并存储在dbOops中,感谢您对的更正。好的,我想序列化程序可以合法地作为
转义,即使它不必转义。而d-o-e(通常)会阻止这种情况。
<xsl:template match="/">
<xsl:call-template name="Issue"/>
</xsl:template>
<xsl:template name="Issue">
<xsl:call-template name="Node1"/>
<xsl:call-template name="Node2"/>
<xsl:call-template name="Node3"/>
</xsl:template>
....
<xsl:template name="Node3">
<!-- Here as CDATA i want the input xml content-->
</xsl:template>
<xsl:template name="Node3">
<Node3>
<xsl:text disable-output-escaping="yes"><![CDATA[</xsl:text>
<xsl:copy-of select="/" />
<xsl:text>]]></xsl:text>
</Node3>
</xsl:template>