Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xslt/3.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.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 获取属性(如果可用),否则为元素_Xml_Xslt - Fatal编程技术网

Xml 获取属性(如果可用),否则为元素

Xml 获取属性(如果可用),否则为元素,xml,xslt,Xml,Xslt,我正在使用XSLT处理一个XML文件,我希望获得每个项目的属性列表,其中包含以下属性: 如果设置了属性aaa,则取该属性的值 如果未设置属性aaa,则取元素的值 从结果集中,仅获取不同的值 下面是一个XML示例 <items> <item> <properties> <property aaa="">pA</property> <property aaa=

我正在使用XSLT处理一个XML文件,我希望获得每个项目的属性列表,其中包含以下属性:

  • 如果设置了属性aaa,则取该属性的值
  • 如果未设置属性aaa,则取元素的值
  • 从结果集中,仅获取不同的值
下面是一个XML示例

<items>
    <item>
        <properties>
            <property aaa="">pA</property>
            <property aaa="pB">pC</property>
            <property aaa="pA">pA</property>
        </properties>
    </item>
    <item>
        <properties>
            <property aaa="">pD</property>
            <property aaa="pE">pF</property>
        </properties>
    </item>
</items>
我的代码给我的是

pA#pB#pC#
pD#pE#pF#

有可能做到这一点吗?

您使用的是
不同值这一事实表明您使用的是XSLT 2.0,因此您可以将XPath 2.0
for
if
构造结合起来:

distinct-values(
    for $prop in properties/property
    return if ($prop/@aaa != '') then $prop/@aaa else $prop
)

使用
不同值这一事实表明您使用的是XSLT 2.0,因此您可以将XPath 2.0
for
if
构造结合使用:

distinct-values(
    for $prop in properties/property
    return if ($prop/@aaa != '') then $prop/@aaa else $prop
)
distinct-values(
    for $prop in properties/property
    return if ($prop/@aaa != '') then $prop/@aaa else $prop
)