Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Xml Xpath从同级的父节点获取值_Xml_Xslt_Xpath_Parent Child_Siblings - Fatal编程技术网

Xml Xpath从同级的父节点获取值

Xml Xpath从同级的父节点获取值,xml,xslt,xpath,parent-child,siblings,Xml,Xslt,Xpath,Parent Child,Siblings,目前我有一些xml结构,如下所示: <element type="Input" name="nationality"> <property i18n="true" text="Nationality" prefix="person.nationality." name="caption">caption</property> <property i18n="true" text="Nationality" prefix="person

目前我有一些xml结构,如下所示:

<element type="Input" name="nationality">
   <property i18n="true" text="Nationality" prefix="person.nationality."
    name="caption">caption</property>
   <property i18n="true" text="Nationality" prefix="person.nationality."
    name="desc">desc</property>
   <property name="visible">1</property>
   <property name="mandatory">0</property>
   <property name="value">AUS</property>
   <restriction prefix="country." base="String">
    <enumeration text="Albania" value="ALB" />
    <enumeration text="Algeria" value="DZA" />
    <enumeration text="Argentina" value="ARG" />
    <enumeration text="Australia" value="AUS" />
    <enumeration text="Austria" value="AUT" />
    <enumeration text="Bahrain" value="BHR" />
   </restriction>
</element>

说明文字
描述
1.
0
澳大利亚
我想问一下,是否有任何方法可以使用xpath提取属性[@name='value']中值等于文本的枚举[@text]标记的值。在这种情况下,预期文本为“澳大利亚”

这只是我第一次使用xpath,任何想法都将受到欢迎。谢谢大家。

使用:

/*/*/enumeration[@value = ../../*[@name = 'value']]/@text
使用

/*/restriction/*[@value = /*/property[@name='value']]/@text
Australia
==========
  Australia
这将选择
/*/restriction
的任何子元素的任何
文本
属性,其
属性等于顶部元素的
属性
子元素的字符串值,该子元素(属性子元素)具有
名称
属性,其字符串值为字符串

如果不想选择属性,而只想选择其字符串值,请使用:

string(/*/restriction/*[@value = /*/property[@name='value']]/@text)
<element type="Input" name="nationality">
   <property i18n="true" text="Nationality" prefix="person.nationality."
    name="caption">caption</property>
   <property i18n="true" text="Nationality" prefix="person.nationality."
    name="desc">desc</property>
   <property name="visible">1</property>
   <property name="mandatory">0</property>
   <property name="value">AUS</property>
   <restriction prefix="country." base="String">
    <enumeration text="Albania" value="ALB" />
    <enumeration text="Algeria" value="DZA" />
    <enumeration text="Argentina" value="ARG" />
    <enumeration text="Australia" value="AUS" />
    <enumeration text="Austria" value="AUT" />
    <enumeration text="Bahrain" value="BHR" />
   </restriction>
</element>
基于XSLT的验证

/*/restriction/*[@value = /*/property[@name='value']]/@text
Australia
==========
  Australia