0

我有一个必须用 xslt 解析的 xml 文件,但问题是在根节点中我有一个链接,它不允许我解析 xml 文件。如果我从 xml 文件中删除该链接,我可以解析该文件。xml 文件如下所示:

<?xml version="1.0" encoding="utf-8"?>
<ROOT xmlns="http://link.org/3.2.1">
  <TOP-LEVEL-PACKAGES>
    <AR-PACKAGE>
      <SHORT-NAME>ActiveEcu</SHORT-NAME>
</AR-PACKAGE>
</TOP-LEVEL-PACKAGES>
</ROOT>

但我不应该修改 xml 文件,所以我需要一个解决方案来解析它而不删除该链接。有什么解决办法吗?

4

1 回答 1

0

在样式表节点中添加类似这样的内容 xmlns:ns1="link.org/3.2.1"; 然后在引用根节点时使用以下语法:ns1:ROOT

基本上,您的 ROOT 节点与代表 URL 的默认命名空间相关联。在 xslt 模板中,您必须向 URL 提及 namspace,以告诉 XSLT 解析器 ROOT 节点属于该特定命名空间

实际上,给定 xml 的所有子节点都属于 URL 表示的默认命名空间

例如

<xsl:stylesheet version="1.0" 
                xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
                xmlns:msxsl="urn:schemas-microsoft-com:xslt"
                             exclude-result-prefixes="xsl"
                xmlns:ns1="http://link.org/3.2.1">
  <xsl:template match="/">
    <xsl:value-of select="ns1:ROOT"/>
  </xsl:template>
</xsl:stylesheet>
于 2015-01-19T11:30:24.263 回答