【发布时间】:2018-01-06 01:42:29
【问题描述】:
提供名称空间前缀以将 XML 转换为 XSLT 已在 SO 中广泛介绍。参见例如XSLT Transform XML with Namespaces、XSLT with XML source that has a default namespace set to xmlns 和 XSLT Transformating XML to XML。然而,经过无数小时的研究和反复试验,我可以说我没能成功。
这是我的 XML 文件:
<?xml version="1.0" encoding="utf-8"?>
<library xmlns="http://void.net/library/1.0">
<catalog>
<cd id="c1">
<singer id="s1">
<name>Kate</name>
<surname>Apple</surname>
</singer>
<title>Great CD</title>
</cd>
<cd id="c2">
<singer id="s2">
<name>Mary</name>
<surname>Orange</surname>
</singer>
<title>Even better CD</title>
</cd>
</catalog>
</library>
这是我目前为止的想法:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
xmlns:b="http://void.net/library/1.0"
exclude-result-prefixes="b">
<xsl:output method="text" indent="no" />
<xsl:template match="/b:library">
<xsl:text>singer,title
</xsl:text>
<xsl:for-each select="b:catalog/b:cd">
<xsl:value-of select="concat(b:singer/b:name, ' ', b:singer/b:surname, ', ', b:title, '
')" />
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
【问题讨论】:
-
什么不起作用?
-
@zx485 请参阅我更新的帖子以获取错误列表。
-
样式表中存在语法错误。在“变换”之后立即删除右尖括号。
-
这个问题应该被关闭,因为它是由一个简单的印刷错误引起的。虽然类似的问题可能是这里的主题,但这个问题的解决方式不太可能帮助未来的读者。
标签: xml xslt xml-namespaces