【问题标题】:XSLT select value of if value in node exists如果节点中的值存在,XSLT 选择值
【发布时间】:2012-03-26 07:47:31
【问题描述】:

我想知道如果找到节点中的值,是否可以使用 XLST 选择值。我对 XSLT 没有任何经验,但我需要在 Microsoft BizTalk 中使用它。

这是我想做的一个例子:

<STF_11_OfficeHomeAddress>
     <AD_0_StreetAddress>Street 1</AD_0_StreetAddress>
     <AD_1_OtherDesignation>AD_1_OtherDesignation_0</AD_1_OtherDesignation>
     <AD_2_City>City 1</AD_2_City>
     <AD_3_StateOrProvince>Provence 1</AD_3_StateOrProvince>
     <AD_4_ZipOrPostalCode>ZIP 1</AD_4_ZipOrPostalCode>
     <AD_5_Country>Country 1</AD_5_Country>
     <AD_6_AddressType>TYPE 1</AD_6_AddressType>
    <AD_7_OtherGeographicDesignation>OtherGeographicDesignation 1</AD_7_OtherGeographicDesignation>
</STF_11_OfficeHomeAddress>
<STF_11_OfficeHomeAddress>
    <AD_0_StreetAddress>Street 2</AD_0_StreetAddress>
    <AD_1_OtherDesignation>OtherDesignation 2</AD_1_OtherDesignation>
    <AD_2_City>City 2</AD_2_City>
    <AD_3_StateOrProvince>Province 2</AD_3_StateOrProvince>
    <AD_4_ZipOrPostalCode>Zip 2</AD_4_ZipOrPostalCode>
    <AD_5_Country>Country 2</AD_5_Country>
    <AD_6_AddressType>AddressType 2</AD_6_AddressType>
    <AD_7_OtherGeographicDesignation>OtherGeographicDesignation 2</AD_7_OtherGeographicDesignation>
</STF_11_OfficeHomeAddress>

如果值&lt;AD_7_OtherGeographicDesignation&gt;OtherGeographicDesignation 2&lt;/AD_7_OtherGeographicDesignation&gt; 存在,请选择&lt;AD_0_StreetAddress&gt;Street 2&lt;/AD_0_StreetAddress&gt;。唯一的问题是,顺序并不总是相同,节点&lt;STF_11_OfficeHomeAddress&gt; 可以在同一个文件中出现 11 次。

有人可以帮帮我吗?

【问题讨论】:

    标签: xml xslt biztalk biztalk-2010


    【解决方案1】:
    //STF_11_OfficeHomeAddress[
      AD_7_OtherGeographicDesignation = 'OtherGeographicDesignation 2'
    ]/AD_0_StreetAddress
    

    读作

    • 任何办公室/家庭地址... (//STF_11_OfficeHomeAddress)
    • ...具有特定值的其他地理标志...([AD_7_OtherGeographicDesignation = 'OtherGeographicDesignation 2'])
    • ...选择街道地址。 (/AD_0_StreetAddress)

    【讨论】:

      【解决方案2】:

      至少先浏览Jeni Tennison's XSLT tutorial pages 的基本部分,然后您可以通过执行推送模式(而不是拉取模式)并使用带有匹配规则的谓词来自己完成此操作,例如:

      <xsl:template match="AD_0_StreetAddress[../AD_7_OtherGeographicDesignation]">
        <xsl:value-of select="."/>
      

      【讨论】:

      • +1 提示,尽管 OP 想要的匹配表达式仍然会有所不同。
      猜你喜欢
      • 1970-01-01
      • 2013-02-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-05-02
      • 2011-07-02
      • 1970-01-01
      相关资源
      最近更新 更多