Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
是否可以在XSLT中将整个源XML作为CDTA获取?_Xml_Xslt - Fatal编程技术网

是否可以在XSLT中将整个源XML作为CDTA获取?

是否可以在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

我想在XSLT中得到这个。这可能吗

源XML

<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">&lt;![CDATA[</xsl:text>
    <xsl:copy-of select="/" />
    <xsl:text>]]></xsl:text>
  </Node3>
</xsl:template>