嘿大家我是xml / xsl的新手。我有以下xml代码
<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type="text/xsl" href="Miau.xsl"?>
<export xmlns="urn:VocabularyExport">
<categories>
<category name="A" id="123" />
<category name="B" id="456" />
</categories>
<vocables>
<vocable categoryId="123" spanishWord="uno" engWord="one" id="45d0a344-785b-
4463-9877-5474c99fdc74" />
<vocable categoryId="456" spanishWord="dos" engWord="two" id="03efffbb-1cbf-
44f9-a377-74da252daac0" />
</vocables>
</export>
要在表格中显示,我有以下(工作)XSL代码:
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:l="urn:VocabularyExport">
<xsl:key name="category" match="category" use="@id" />
<xsl:template match="/">
<html>
<body>
<h1>My Vocable Colletion</h1>
<table border="1">
<tr bgcolor="#9acd32">
<th>Id</th>
<th>Deutsches Wort</th>
<th>Spanishes Wort</th>
<th>CategoryId</th>
</tr>
<xsl:for-each select="l:export/l:vocables/l:vocable">
<tr>
<td>
<xsl:value-of select="@id"/>
</td>
<td>
<xsl:value-of select="@germanWord"/>
</td>
<td>
<xsl:value-of select="@spanishWord"/>
</td>
<td>
<xsl:value-of select="@categoryId"/>
</td>
</tr>
</xsl:for-each>
</table>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
而不是categoryId
我想用类别名称替换它(请参阅节点categories
)。有什么建议吗?
答案 0 :(得分:0)
您为XML / XSLT新手开辟了一个良好的开端,因为您已经在处理XSLT中的命名空间时添加了。但是,你错过了你的钥匙。应该是这个
<xsl:key name="category" match="l:category" use="@id" />
然后,要获取类别名称,您需要的表达式为:
<xsl:value-of select="key('category', @categoryId)/@name"/>