无法在XSLT 2.0中加载外部查找表

时间:2014-02-07 13:19:09

标签: xslt xslt-2.0 saxon

我正在尝试在xslt中实现查找表功能。我的查找表位于与我的XSL文件相同位置的外部文件中。这是我的XSL,查找表文件内容。当我运行这个时,除了inside the templatefield-names-table.xml 之外我没有看到任何输出 感谢有人可以帮我识别问题。另外,请使用XSLT 2.0分享一些示例。我正在使用XSLT 2.0,而我的XSL库是撒克逊

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()" />

场名称-table.xml

<?xml version="1.0" encoding="UTF-8"?>
<names>
  <name canonical="vat_total" rml="rml_vat_total"></name>
</names>

谢谢

1 个答案:

答案 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')" />