0

我想在没有任何引擎的情况下直接使用 xslt 1.0 在 IE 浏览器中显示 xml。我可以从源 xml 中获取一些代码,然后我想从名为 voc.xml 的外部 xml 中获取此代码的相应显示名称。但是我无法按照这些说明获取显示名称 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>
4

1 回答 1

0

我在这里看到三个问题:

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

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. 如何以独立于平台的方式使用节点集功能?
于 2012-08-13T08:18:49.427 回答