XSLT无法正常工作

时间:2009-12-14 02:01:25

标签: xml xslt

我有一个XML文件,我想使用XSLT进行转换。它仅在我从XML文件的以下部分中删除所有属性时才起作用:

<DiscoveryClientData 
  xmlns="http://www.frontrange.com/centennial/discovery" 
  SchemaVersion="0.6" 
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
  xsi:schemaLocation="http://www.frontrange.com/centennial/discovery DiscoveryClientData-0.6.xsd"
/>

XSLT就像这样开始:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
   <xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes" />
      <xsl:template match="DiscoveryClientData">

有谁知道为什么会失败?失败的是它没有在转换后的数据周围放置任何元素标签,只是将它全部吐出一个连续的字符串。

谢谢!

编辑:好的,下面给出的示例有效,但有没有办法在XSLT文件中只定义一次前缀?所以我不必重写我的整个XSLT文件?感谢。

1 个答案:

答案 0 :(得分:5)

您的XML不在默认命名空间中,因此您的XSLT找不到要处理的任何节点。

检查Here以了解如何将命名空间分配给XSL模板。

按流行需求添加此项。取自:Here

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
   xmlns:b="urn:xmlns:25hoursaday-com:bookstore">

<xsl:template match="b:bookstore">
<book-titles>
<xsl:apply-templates select="b:book/b:title"/>
</book-titles>
</xsl:template>

<xsl:template match="b:title"> 
<xsl:copy-of select="." />
</xsl:template>
</xsl:stylesheet>