使用XSLT解析XML会导致ROOT节点出现问题

时间:2015-01-19 11:17:42

标签: xml xslt hyperlink parsexml

我有一个xml文件,我必须用xslt解析,但问题是在根节点我有一个链接,它不允许我解析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文件,因此我需要一个解析它来解析它而不删除该链接。 任何解决方案?

1 个答案:

答案 0 :(得分:0)

样式表节点中的

添加类似xmlns的内容:ns1 =&#34; 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>