我是XSLT的新手,我需要帮助为TBX文件创建一个。
以下是TBX代码的示例:
<termEntry id="eid-1">
<descripGrp>
<descrip type="Creator">ejablonski</descrip>
</descripGrp>
<descripGrp>
<descrip type="xDate_CreateTime">2014-01-21T20:47:59Z</descrip>
</descripGrp>
<langSet xml:lang="nl-nl">
<tig>
<term id="tid-1-nl-nl-1">bureau</term>
<descripGrp>
<descrip type="CaseSense">Near</descrip>
</descripGrp>
<descripGrp>
<descrip type="xBool_Forbidden">False</descrip>
</descripGrp>
<descripGrp>
<descrip type="PartialTreshold">Half</descrip>
</descripGrp>
</tig>
</langSet>
<langSet xml:lang="en-us">
<tig>
<term id="tid-1-en-us-3">agencies</term>
<descripGrp>
<descrip type="CaseSense">Near</descrip>
</descripGrp>
<descripGrp>
<descrip type="xBool_Forbidden">False</descrip>
</descripGrp>
<descripGrp>
<descrip type="PartialTreshold">Half</descrip>
</descripGrp>
</tig>
</langSet>
</termEntry>
我需要在适当的英语或荷兰语列中显示以下内容:
Dutch English
bureau agencies
more Dutch more English
TBX文件是词汇表格式。在上面的示例中,除了langset中的xml:lang属性之外,元素和属性是相同的。一个显然是荷兰语,下一个是英语等价物。
这是我到目前为止所尝试的内容:
<?xml version="1.0"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output method="html"/>
<xsl:template match="/">
<html>
<head>
<title>Translation</title>
</head>
<body>
<p>
<xsl:for-each select="/text/body/termEntry/langSet/tig"> <br />
<xsl:value-of select="langSet =nl-nl/term" disable-output-escaping="yes"/>
</xsl:for-each>
<xsl:for-each select="/text/body/termEntry/langSet/tig"> <br />
<xsl:value-of select="term" disable-output-escaping="yes"/>
</xsl:for-each>
</p>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
感谢, 海梅
答案 0 :(得分:0)
使用下面的输入XML:
<body>
<termEntry id="eid-1">
<descripGrp>
<descrip type="Creator">ejablonski</descrip>
</descripGrp>
<descripGrp>
<descrip type="xDate_CreateTime">2014-01-21T20:47:59Z</descrip>
</descripGrp>
<langSet xml:lang="nl-nl">
<tig>
<term id="tid-1-nl-nl-1">bureau</term>
<descripGrp>
<descrip type="CaseSense">Near</descrip>
</descripGrp>
<descripGrp>
<descrip type="xBool_Forbidden">False</descrip>
</descripGrp>
<descripGrp>
<descrip type="PartialTreshold">Half</descrip>
</descripGrp>
</tig>
</langSet>
<langSet xml:lang="en-us">
<tig>
<term id="tid-1-en-us-3">agencies</term>
<descripGrp>
<descrip type="CaseSense">Near</descrip>
</descripGrp>
<descripGrp>
<descrip type="xBool_Forbidden">False</descrip>
</descripGrp>
<descripGrp>
<descrip type="PartialTreshold">Half</descrip>
</descripGrp>
</tig>
</langSet>
</termEntry>
</body>
应用以下样式表
<?xml version="1.0"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output method="html"/>
<xsl:template match="/">
<html>
<head>
<title>Translation</title>
</head>
<body>
<table>
<thead>
<tr>
<td>Dutch</td>
<td>English</td>
</tr>
</thead>
<tbody>
<xsl:for-each select="body/termEntry">
<tr>
<td><xsl:value-of select="descendant::tig[1]/term"/></td>
<td><xsl:value-of select="descendant::tig[2]/term"/></td>
</tr>
</xsl:for-each>
</tbody>
</table>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
产生
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Translation</title>
</head>
<body>
<table>
<thead>
<tr>
<td>Dutch</td>
<td>English</td>
</tr>
</thead>
<tbody>
<tr>
<td>bureau</td>
<td>agencies</td>
</tr>
</tbody>
</table>
</body>
</html>
以下是更多代码:
<termEntry id="eid-4">
<descripGrp>
<descrip type="Creator">ejablonski</descrip>
</descripGrp>
<descripGrp>
<descrip type="xDate_CreateTime">2014-01-21T20:50:15Z</descrip>
</descripGrp>
<langSet xml:lang="nl-nl">
<tig>
<term id="tid-4-nl-nl-1">hoedanigheid</term>
<descripGrp>
<descrip type="CaseSense">Near</descrip>
</descripGrp>
<descripGrp>
<descrip type="xBool_Forbidden">False</descrip>
</descripGrp>
<descripGrp>
<descrip type="PartialTreshold">Half</descrip>
</descripGrp>
</tig>
</langSet>
<langSet xml:lang="en-us">
<tig>
<term id="tid-4-en-us-3">capacity</term>
<descripGrp>
<descrip type="CaseSense">Near</descrip>
</descripGrp>
<descripGrp>
<descrip type="xBool_Forbidden">False</descrip>
</descripGrp>
<descripGrp>
<descrip type="PartialTreshold">Half</descrip>
</descripGrp>
</tig>
</langSet>
</termEntry>
<termEntry id="eid-5">
<descripGrp>
<descrip type="Creator">ejablonski</descrip>
</descripGrp>
<descripGrp>
<descrip type="xDate_CreateTime">2014-01-21T20:50:52Z</descrip>
</descripGrp>
<langSet xml:lang="nl-nl">
<tig>
<term id="tid-5-nl-nl-1">ontwikkelaar</term>
<descripGrp>
<descrip type="CaseSense">Near</descrip>
</descripGrp>
<descripGrp>
<descrip type="xBool_Forbidden">False</descrip>
</descripGrp>
<descripGrp>
<descrip type="PartialTreshold">Half</descrip>
</descripGrp>
</tig>
</langSet>
<langSet xml:lang="en-us">
<tig>
<term id="tid-5-en-us-3">developer</term>
<descripGrp>
<descrip type="CaseSense">Near</descrip>
</descripGrp>
<descripGrp>
<descrip type="xBool_Forbidden">False</descrip>
</descripGrp>
<descripGrp>
<descrip type="PartialTreshold">Half</descrip>
</descripGrp>
</tig>
</langSet>
</termEntry>
所以,从上面的代码我希望得到这样的代码:
荷兰语 英语
hoedanigheid能力
ontwikkelaar开发人员
等等词汇表中的其他术语。此外,我在您的代码中看到,您必须指定标记的实例数量,但可能会有一些或者词汇表中可能有数千个实例。如果我们不必指定有多少,并且代码可以只读取该标记的所有实例,那就太好了。
的Jaime