我有一个变量varLocationRegion,我已经存储了整个xml。现在我想在xslt中循环遍历该变量

时间:2015-01-28 22:45:51

标签: loops variables xslt pass-through

我有一个变量varLocationRegion,我已经存储了整个xml(其中有两个元素位置和区域。现在我想通过匹配位置来获取区域的值来循环遍历xslt中的变量。请指教。谢谢!

<?xml version='1.0' encoding='UTF-8'?>
<wd:Report_Data xmlns:wd="urn:com.workday/bsvc">
    <wd:Report_Entry>
        <wd:Location_ID>111</wd:Location_ID>
        <wd:Region_Ref_ID>UNITED_STATES_REGION</wd:Region_Ref_ID>
    </wd:Report_Entry>
    <wd:Report_Entry>
        <wd:Location_ID>111V</wd:Location_ID>
    </wd:Report_Entry>
</wd:Report_Data>

1 个答案:

答案 0 :(得分:0)

根据您提供的信息,您可以尝试以下方法: 可以通过以下方式尝试XSLT 1.0的解决方案: 使用Muenchian Grouping将xml中的唯一Location_ID和原始xml上的迭代组合在一起,使用已经可用的唯一Location_ID查找关联的Region_Ref_ID列表到特定的Location_ID。

<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" 
                xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
                xmlns:wd="urn:com.workday/bsvc">
  <xsl:output method="text"/>
  <xsl:key name="uniqueLocation" match="wd:Report_Entry" use="wd:Location_ID"/>
  <xsl:template match="/">
    <!--variable called data is the variable that contains your xml-->
    <xsl:variable name="uniqueLocationData" select="$data/wd:Report_Data/wd:Report_Entry[count(.|key('uniqueLocation',wd:Location_ID)[1])=1]"/>
    <xsl:for-each select="$data/wd:Report_Data/wd:Report_Entry/wd:Region_Ref_ID[$data/wd:Report_Data/wd:Report_Entry/wd:Location_ID=$uniqueLocationData/wd:Location_ID]">
      <xsl:value-of select="."/>
    </xsl:for-each>
  </xsl:template>

</xsl:stylesheet>