我正在尝试在xslt中实现查找表功能。我的查找表位于与我的XSL文件相同位置的外部文件中。这是我的XSL,查找表文件内容。当我运行这个时,除了inside the templatefield-names-table.xml
之外我没有看到任何输出
感谢有人可以帮我识别问题。另外,请使用XSLT 2.0分享一些示例。我正在使用XSLT 2.0,而我的XSL库是撒克逊
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="2.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
exclude-result-prefixes="soap">
<xsl:output indent="yes" method="xml"/>
<xsl:strip-space elements="*"/>
<!-- holds the path to field names mapping table -->
<xsl:variable name="field-names-table-path" select="'field-names-table.xml'" />
<!-- load the field names mapping table and store it in a variable -->
<xsl:variable name="field-names-table" select="document($field-names-table-path)"/>
<xsl:key name="field-name-lookup" match="name" use="@canonical"/>
<!-- entry point template -->
<xsl:template match="/soap:Envelope/soap:Body" name="main">
<xsl:value-of select="'inside the template'" />
<xsl:value-of select="$field-names-table-path"/>
<xsl:value-of select="$field-names-table"/>
<xsl:variable name="brand" select="'rml'"/>
<xsl:value-of select="key('field-name-lookup','vat_total')" />
<xsl:apply-templates/>
</xsl:template>
<xsl:template match="text()" />
<?xml version="1.0" encoding="UTF-8"?>
<names>
<name canonical="vat_total" rml="rml_vat_total"></name>
</names>
谢谢
答案 0 :(得分:2)
我想你想要
<xsl:value-of select="key('field-name-lookup','vat_total', $field-names-table)/@rml" />
而不是
<xsl:value-of select="key('field-name-lookup','vat_total')" />