XSLT 1.0中的document()函数

时间:2012-08-13 01:12:21

标签: xslt xslt-1.0

我想在IE浏览器中直接使用xslt 1.0显示xml而没有任何引擎。我可以从源xml获取一些代码,然后我想从名为voc.xml的外部xml获取相应的displayname到这个代码。但是我无法按照这些说明获得显示名称 1.在xsl

中定义一个文档变量
<xsl:variable name="voc" select="document('voc.xml')"/>

2.在我自己的xpath之后输入代码,我可以得到变量'paytypecode'='01'的值 3.在voc.xml中找到相应的代码

<xsl:variable name='mappedpaytypecode' select="$voc//systems/system[@root='CV07.10.003医疗费用来源类别代码表']/code[@value='01']"/> 

4.在voc.xml

中设置此相应代码的displayName
<xsl:variable name='displayName_value' select="$mappedpaytypecode/@displayname"/>  

并且voc.xml就像这样

<systems>
    <system codeSystemName="CV07.10.003医疗费用来源类别代码表" root="CV07.10.003医疗费用来源类别代码表">
       <code value="01" displayname="城镇职工基本医疗保险" />
       <code value="02" displayname="城镇居民基本医疗保险" />
       <code value="03" displayname="新型农村合作医疗" />
       <code value="04" displayname="贫困救助" />
       <code value="05" displayname="商业医疗保险" />
       <code value="06" displayname="全公费" />
       <code value="07" displayname="全自费" />
       <code value="99" displayname="其他" />      
  </system> 
</systems>

1 个答案:

答案 0 :(得分:0)

我在这里看到三个问题:

  1. 您的示例输入文档格式错误。请检查&lt; systems&gt;的结束标记。元件。
  2. XPath区分大小写。在$ displayName_value变量的select表达式中,您使用了camel-case('@ displayName'),但在输入文档中,您使用了小写('@displayname');
  3. 您没有提及您正在测试的浏览器范围。如果是FF(桌面)或IE,你没问题。请注意,Google Chrome(桌面版)不允许使用本地系统XSLT。这是设计的。我不知道移动浏览器是否支持客户端XSLT。
  4. IE浏览器

    不要忘记使用node-set()函数。参考文献:

    1. http://msdn.microsoft.com/en-us/library/hz88kef0.aspx
    2. http://dpcarlisle.blogspot.com.au/2007/05/exslt-node-set-function.html
    3. How to use node-set function in a platform-independent way?