doctype cesAlign的XSLT解析器/内容错误xml到文本

doctype cesAlign的XSLT解析器/内容错误xml到文本,xml,xslt,text,Xml,Xslt,Text,当我尝试在下面的cesAlign 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 method="text" encoding="utf-8" /> <xsl:templ

当我尝试在下面的cesAlign 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 method="text" encoding="utf-8" />

  <xsl:template match="linkGrp">
    <xsl:value-of select="normalize-space()"/>
    <xsl:text>&#xa;</xsl:text> <!-- newline after sentences -->
  </xsl:template>

</xsl:stylesheet>
我遇到这个错误:

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE cesAlign PUBLIC "-//CES//DTD XML cesAlign//EN" "">
<cesAlign version="1.0">
<linkGrp targType="s" fromDoc="en/1976/7277/69682_1of1.xml.gz" toDoc="zh/1976/7277/4041906_1of1.xml.gz">
<link id="SL0" xtargets=";1" />
<link id="SL1" xtargets="1;2" />
<link id="SL2" xtargets="2;3" />
...

是否应该在某个地方指定这个特定的输入文档类型cesAlign?

因为我不确定预期的输出应该是什么样的-将不会产生任何结果,因为它是一个应该应用于字符串而不是节点的函数-我刚刚编写了一个小XSLT来获取属性值,与一些文本一起作为标识符。不需要指定输入文档类型:

parser error : Content error in the external subset
<!DOCTYPE cesAlign PUBLIC "-//CES//DTD XML cesAlign//EN" "">
如果所需的输出看起来完全不同,只需在问题中更新它,因为不清楚您是否希望获得链接组和链接的属性值,或者是整个节点的副本

供参考:

<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output method="text" encoding="utf-8" />

<xsl:template match="/*">
 <xsl:apply-templates select="linkGrp "/>
</xsl:template>

<xsl:template match="linkGrp">
  <xsl:text>linkGrp&#xa;</xsl:text>
  <xsl:text>targType: </xsl:text><xsl:value-of select="./@targType"/>
  <xsl:text>, fromDoc: </xsl:text><xsl:value-of select="./@fromDoc"/>
  <xsl:text>, toDoc: </xsl:text><xsl:value-of select="./@toDoc"/>
  <xsl:apply-templates select="./link"/>
 </xsl:template>

<xsl:template match="link">
  <xsl:text>&#xa;&#xa;link&#xa;id: </xsl:text>
  <xsl:value-of select="./@id"/>
  <xsl:text>, xtargets: </xsl:text>
  <xsl:value-of select="./@xtargets"/>
</xsl:template>
</xsl:stylesheet>  
linkGrp
targType: s, fromDoc: en/1976/7277/69682_1of1.xml.gz, 
             toDoc: zh/1976 /7277/4041906_1of1.xml.gz

link
id: SL0, xtargets: ;1

link
id: SL1, xtargets: 1;2

link
id: SL2, xtargets: 2;3