如何使用 XPath(最好是 1.0)选择具有子类别值的类别列表?
结构如下:
- 类别 (1)
- 名称 (1)
- 价值 (1-1)
- 价值 (1-2)
- 类别 (2)
- 名称 (2)
- 价值 (2-1)
- 价值 (2-2)
- 价值 (2-3)
- 等等
所以理想情况下,我需要一个类别名称及其关联值的返回列表,例如:
name
(1):value
(1-1),value
(1-2)name
(2):value
(2-1),value
(2-2),value
(2-3)- 等等
或者理想情况下:
name
(1) /value
(1-1)name
(1) /value
(1-2)name
(2) /value
(2-1)name
(2) /value
(2-2)name
(2) /value
(2-3)我希望是这样
/characteristics/category/[concat(name/uk, "/", value/uk)]
的,但语法不正确,
或任何类似的格式,只要我可以区分主要类别和子类别,因此我可以使用适当的后端语言进一步解析该数据。
基本上,我希望实现类别及其子类别之间的关联,以便将它们存储在分层分类词汇表中。
我从提要中获得了以下 XML:
<characteristics>
<category id="1">
<name>
<uk>Orientation</uk>
<es>Orientación</es>
</name>
<value id="1">
<uk>North</uk>
<es>Norte</es>
</value>
<value id="2">
<uk>East</uk>
<es>Este</es>
</value>
<value id="3">
<uk>South</uk>
<es>Sur</es>
</value>
<value id="4">
<uk>West</uk>
<es>Oeste</es>
</value>
</category>
<category id="2">
<name>
<uk>Condition</uk>
<es>Estado</es>
</name>
<value id="1">
<uk>Recently Refurbished</uk>
<es>Renovado Recientemente</es>
</value>
</category>
<category id="3">
<name>
<uk>Pool</uk>
<es>Piscina</es>
</name>
<value id="1">
<uk>Private</uk>
<es>Privada</es>
</value>
</category>
<category id="4">
<name>
<uk>Climate Control</uk>
<es>Climatización</es>
</name>
<value id="1">
<uk>Fireplace</uk>
<es>Chimenea</es>
</value>
</category>
<category id="5">
<name>
<uk>Views</uk>
<es>Vistas</es>
</name>
<value id="1">
<uk>Sea</uk>
<es>Mar</es>
</value>
<value id="2">
<uk>Mountain</uk>
<es>Montaña</es>
</value>
<value id="3">
<uk>Panoramic</uk>
<es>Panorámicas</es>
</value>
</category>
<category id="6">
<name>
<uk>Features</uk>
<es>Caracteristicas</es>
</name>
<value id="1">
<uk>Guest Apartment</uk>
<es>Aprtmnt. Huéspedes</es>
</value>
<value id="2">
<uk>Guest House</uk>
<es>Casa de Huéspedes</es>
</value>
<value id="3">
<uk>Barbeque</uk>
<es>Barbacoa</es>
</value>
</category>
</characteristics>
这是返回第一类值的 XPath 查询:
/characteristics/category[@id=1]/name/uk | /characteristics/category[@id=1]/value/uk
<uk>Orientation</uk>
<uk>North</uk>
<uk>East</uk>
<uk>South</uk>
<uk>West</uk>
现在我如何组合、比较或反向引用这两个id
并使其动态地为每个类别工作?
知道如何生成这样的 XPath 查询吗?
我还尝试了../..
, parent::
, ancestor::
,[]
等表达式和条件的不同组合,但没有成功。我也尝试过使用,但它在这个演示string-join
中不起作用,其次我试图解析它的代码不支持XPath 2.0。
或者,最接近/相似的选择/格式允许我列出并区分不同类别的名称及其相关值,以便我可以用不同的语言进一步解析该结构?
其他尝试:
concat(/characteristics/category[@id=@id]/name/uk, "/", /characteristics/category[@id=@id]/value/uk)
仅返回第一个元素:(
Orientation/North
不需要[@id=@id]
)concat(/characteristics/category/*/*[name()="uk"]/node(), /characteristics/category)
创建一些我不理解的层次结构(它是哪种格式):
Orientation Orientation Orientación North Norte East Este South Sur West Oeste
但仅适用于第一个主要类别