存在xsd链接覆盖xslt

时间:2016-06-06 09:50:09

标签: xml xslt xsd

我真的很习惯使用XML,XSD或XSLT。

我要做的是以下内容:

  • 输出数据以XML格式传输。
  • 用户可以查看XML文件
  • 用户不习惯使用XML,并且希望在一个漂亮的表中查看数据而不是XML代码
  • 我为此创建了一个XSLT文件

我完成了XSLT文件(除了调整颜色模式等)。 我现在的问题是在xml文件中有一个指向外部xsd文件的链接(xmlns = ..)。只要存在此代码,渲染的XML就会丢失提取的输入(xsl:value-of select = ...)。

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="test.xsl"?>
<Table1 xmlns="http://www.test.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">

我的xslt代码如下所示:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
  <html>
  <body>
    <table border="1">  
  <tr>
    <td>
    Id of
    </td>
    <td>
    <xsl:value-of select="//idOf"/>
    </td>       
  </tr>
    </table>
  </body>
  </html>
</xsl:template>
</xsl:stylesheet>

我做错了什么?

THX!

1 个答案:

答案 0 :(得分:0)

尝试(根据michael.hor257k&#39评论编辑)

<xsl:stylesheet version="2.0" 
xmlns:test="http://www.test.xsd"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
exclude-result-prefixes="test">

然后将test:添加到您访问xml结构的所有内容中,例如<xsl:value-of select="//test:idOf"/>

xmlns =&#34; http://www.test.xsd"不是只是 a&#34; Link&#34;在你的XML中但是它声明了默认的命名空间 - 在这里使用xsd作为文件扩展名可能是一种品味,但你无法使用它来访问XML中的数据。