Java中的XSLT:CDATA节拆分
我想替换一个巨大的XML文件中的一些项,我想用XSLT来完成。我绝对没有这方面的经验,所以如果你认为有更好的方法,请告诉我 无论如何,作为第一步,我只想复制整个XML。这是我的xsl文件: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
<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>