0

使用以下 XML,我需要选择家庭地址(如果存在),如果不存在则选择工作地址。所以我试图找到从 wd:Address_Line_Data/wd:Usage/wd:Type_Data/wd:Type_Reference/@wd 的起点选择 wd:Address_Line_Data[@wd:Descriptor="Address_Line_1"] 值的语法:描述符="首页"

这是 XML:

                  <wd:Contact_Data>
                    <wd:Address_Data>
                       <wd:Address_Line_Data  wd:Descriptor="Address Line 1">
                       <wd:Usage_Data>
                          <wd:Type_Data>
                             <wd:Type_Reference wd:Descriptor="Work">
                             </wd:Type_Reference>
                          </wd:Type_Data>
                       </wd:Usage_Data>
                    </wd:Address_Data>
                    <wd:Address_Data>
                       <wd:Usage_Data>
                          <wd:Type_Data>
                             <wd:Type_Reference wd:Descriptor="Home">
                             </wd:Type_Reference>
                          </wd:Type_Data>
                       </wd:Usage_Data>
                    </wd:Address_Data>
                 </wd:Contact_Data>

我对 XSTL 很陌生,我尝试了以下三个表达式,所有这些表达式都没有任何作用。我正在使用 xml 1.0。有什么建议么?提前致谢!

    <xsl:value-of select="wd:Worker_Data/wd:Personal_Data/wd:Contact_Data/wd:Address_Data/wd:Usage_Data/wd:Type_Data/wd:Type_Reference[@wd:Descriptor='Home']/ancestor::wd:Address_Data/wd:Address_Line_Data[@wd:Descriptor='Address_Line_1']"/>     

<xsl:value-of select="wd:Worker_Data/wd:Personal_Data/wd:Contact_Data/wd:Address_Data/wd:Usage_Data/wd:Type_Data/wd:Type_Reference[@wd:Descriptor='Home'][ancestor::wd:Address_Data[wd:Address_Line_Data[@wd:Descriptor='Address_Line_1']]]"/>        

<xsl:value-of select="wd:Worker_Data/wd:Personal_Data/wd:Contact_Data/wd:Address_Data/wd:Usage_Data/wd:Type_Data/wd:Type_Reference[@wd:Descriptor='Home']/ancestor::wd:Usage_Data/preceding-sibling::wd:Address_Line_Data[@wd:Descriptor='Address_Line_1']"/>
4

1 回答 1

0

expr1在 XPath 1.0 中,如果给定条件$condtrue(),则可以选择使用,expr2否则使用这个单一的 XPath 表达式

(expr1)[$cond] | (expr2)[not($cond)]

这可以应用于您的案例。唯一的困难是您没有提供格式良好的 XML 文档,也没有指定确切的条件和必须在何时$cond或何时选择的确切(组)节点not($cond)

于 2013-04-06T03:27:32.140 回答