首页 > 解决方案 > 在两个不同的命名空间中解析 XSLT 样式表失败

问题描述

我使用 XSL 显示 XML,它总是给我错误“加载样式表时出错:解析 XSLT 样式表失败。”

不知道哪一部分错了,请帮忙。

这是xml

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="asup.xsl"?>

<T_VSERV xmlns="http://someweb.com/ns/T_VSERV/1.0 
    xmlns:asup="http://someweb.com/ns/ASUP/1.1" >
<asup:TABLE_INFO>
<asup:field>
    <asup:tag>vserver</asup:tag>
    <asup:smf_name>vserver</asup:smf_name>
    <asup:ui_name>Vserver</asup:ui_name>
    <asup:type>vs_text_alt_sort</asup:type>
    <asup:qualification>key</asup:qualification>
    <asup:remap>hash</asup:remap>
</asup:field>
<asup:field>
    <asup:tag>id</asup:tag>
    <asup:smf_name>id</asup:smf_name>
    <asup:ui_name>Id-Unsigned</asup:ui_name>
    <asup:type>unsigned</asup:type>
    <asup:qualification>read</asup:qualification>
    <asup:remap>noop</asup:remap>
</asup:field>
</asup:TABLE_INFO>
</T_VSERV>

这里是 xsl

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" 
    xmlns:xsl="http://someweb.com/ns/T_AUTOSUPPORT/1.0"
    xmlns:asup="http://someweb.com/ns/ASUP/1.1">

<xsl:template match="/">
  <html>
  <body>
  <h2>ASUP</h2>
  <table border="1">
    <tr bgcolor="#9acd32">
      <th>tag</th>
      <th>ui_name</th>
    </tr>
    <xsl:for-each select="asup:TABLE_INFO/asup:field'">
    <tr>
      <td><xsl:value-of select="asup:tag"/></td>
      <td><xsl:value-of select="asup:ui_name"/></td>
    </tr>
    </xsl:for-each>
  </table>
  </body>
  </html>
</xsl:template>:template>
</xsl:stylesheet>

加载样式表时出错:解析 XSLT 样式表失败。

标签: xmlxslt

解决方案


样式表无效,因为 XSLT 样式表必须植根stylesheet于 namespace 中的(或转换)元素http://www.w3.org/1999/XSL/Transform

您想要的样式表植根stylesheet于 namespace 中的一个元素http://someweb.com/ns/T_AUTOSUPPORT/1.0,这是不正确的。


推荐阅读