Xml 如果Doctype或包含的实体为',如何准确复制Doctype;我不知道?
我今天的挑战是找出如何复制源文档的Doctype。 好的,首先这是我的来源:Xml 如果Doctype或包含的实体为',如何准确复制Doctype;我不知道?,xml,xslt,xpath,entity,doctype,Xml,Xslt,Xpath,Entity,Doctype,我今天的挑战是找出如何复制源文档的Doctype。 好的,首先这是我的来源: <?xml version='1.0' encoding='ISO-8859-1'?> <!DOCTYPE XMLBlock SYSTEM "/dtd/XMLBlock.dtd" [ <!ENTITY change '<issue> <version>VERSION NO: 98765432</version> <purpose><!
<?xml version='1.0' encoding='ISO-8859-1'?>
<!DOCTYPE XMLBlock SYSTEM "/dtd/XMLBlock.dtd" [
<!ENTITY change '<issue>
<version>VERSION NO: 98765432</version>
<purpose><![CDATA[
Main purpose
- to do things
- to fix issues ]]>
</purpose>
</issue> '>]>
<XMLBlock>
<Title>XML Stuff</Title>
<Content>DemoText</Content>
</XMLBlock>
]>
XML材料
降级文本
正如您所看到的,有一个版本号为的内部实体,它每次都会更改。现在我想抓住这个数字来决定需要哪个包装器。
这就是我的xslt:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output doctype-system="/dtd/XMLBlock.dtd" />
<xsl:template match ="/" >
<xsl:choose>
<xsl:when test="&change;/issue/version < 9000000">
<XMLBlock>
<red>
<xsl:copy-of select="*" />
</red>
</XMLBlock>
</xsl:when>
<xsl:otherwise>
<XMLBlock>
<green>
<xsl:copy-of select="*" />
</green>
</XMLBlock>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
</xsl:stylesheet>
但是这个&改变;未解析,因为它不是xslt的一部分。
那么,我该如何解决这个问题,还是根本不可能?
问候
MarkusXSLT没有实体的声明
&changed代码>所以它不是有效的XML,正如您已经知道的。样式表本身是固定的,可变部分仅是转换后的文档
转换器看到的解析XML也没有关于版本值的任何信息。因此,将其声明为实体似乎毫无用处
似乎您的版本号最好存储在处理指令中:
<?xml version="1.0"?>
<!DOCTYPE XMLBlock SYSTEM "/dtd/XMLBlock.dtd"]>
<?version 98765432?>
<XMLBlock> ...
...
在样式表中,可以轻松访问以下版本:
<xsl:variable name="version" select="/processing-instruction('version')"/>
好的。。。是的,对于像字符串这样的简单内容,我同意,但我也有这样的内容:“@markus0074最好把这个问题。回答一个问题,却收到一条评论,说实际情况更复杂,这也是令人沮丧的。