Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/398.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
Java中的XSLT:CDATA节拆分_Java_Xml_Xslt_Cdata - Fatal编程技术网

Java中的XSLT:CDATA节拆分

Java中的XSLT:CDATA节拆分,java,xml,xslt,cdata,Java,Xml,Xslt,Cdata,我想替换一个巨大的XML文件中的一些项,我想用XSLT来完成。我绝对没有这方面的经验,所以如果你认为有更好的方法,请告诉我 无论如何,作为第一步,我只想复制整个XML。这是我的xsl文件: <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:output omit-xml-declaration="yes" indent="no" cdata-section

我想替换一个巨大的XML文件中的一些项,我想用XSLT来完成。我绝对没有这方面的经验,所以如果你认为有更好的方法,请告诉我

无论如何,作为第一步,我只想复制整个XML。这是我的xsl文件:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:output omit-xml-declaration="yes" indent="no" cdata-section-elements="script"/>
  <xsl:template match="@*|node()">
    <xsl:copy>
      <xsl:apply-templates select="@*|node()"/>
    </xsl:copy>
  </xsl:template>
</xsl:stylesheet>
大多数输出都很好,而且元素的顺序也没有改变(这可能非常重要)

XML在CDATA部分包含一些Lua代码。但是,在某些(看似随机的)点,CDATA部分会关闭并再次打开。这似乎与代码中的括号有关,但只是比例-1.4 MB XML中大约有5个点如下所示:

<script><![CDATA[
...
html_encoding["Otilde"  ] = string.char(213)
html_encoding["Ouml"    ]]]><![CDATA[ = string.char(214)
html_encoding["Oslash"  ] = string.char(216)
...
]]></script>

在原始文件中,中间的行与其他行一样。我把点放在成千上万行的地方。这是怎么回事


应该处理XML的(专有)应用程序无法加载它。

告诉我们您正在使用哪个XSLT处理器很有用


如果序列化程序在数据中遇到
“]]>”
,则必须关闭并重新打开CDATA节,因为该序列不能合法地出现在CDATA节中。在任何其他情况下都不需要这样做,尽管规范可能不允许这样做。

StackTrace可能会有所帮助。请尝试删除
cdata节元素
。CDATA是一种方便的工具,在XML中完全没有必要。如果您的专有目标应用程序能够处理XML,那么它就可以工作了。再说一次,如果您的专有目标应用程序能够处理XML,那么它应该已经可以工作了。@Tomalak为什么不需要它呢?<和>在XML中不允许作为内容,但代码可以包含它们。是的,但是
很容易在XML中编码为
,因此这根本不是一个限制。我不允许更改这些部分的内容,因此我认为这不是一个选项。
<script><![CDATA[
...
html_encoding["Otilde"  ] = string.char(213)
html_encoding["Ouml"    ]]]><![CDATA[ = string.char(214)
html_encoding["Oslash"  ] = string.char(216)
...
]]></script>