我有一个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文件?感谢。
答案 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>