мне нужен узел AX_Namensnummer
где дочерний узел istBestandteilVon
имеет значение атрибута urn:adv:oid:DEBBAL0600000Y09
Выберите родительские узлы, которые имеют подзону с определенным атрибутом через XPath?
Вот небольшой отрывок из моего XML:
<enthaelt>
<wfs:FeatureCollection gml:id="A75">
<gml:featureMember>
<AX_Namensnummer gml:id="DEBBAL0600000XUm">
<gml:identifier codeSpace="http://www.adv-online.de/">urn:adv:oid:DEBBAL0600000XUm</gml:identifier>
<lebenszeitintervall>
<AA_Lebenszeitintervall>
<beginnt>2012-01-11T07:03:49Z</beginnt>
</AA_Lebenszeitintervall>
</lebenszeitintervall>
<modellart>
<AA_Modellart>
<advStandardModell>DLKM</advStandardModell>
</AA_Modellart>
</modellart>
<anlass>000000</anlass>
<laufendeNummerNachDIN1421>0001.00.00.00.00</laufendeNummerNachDIN1421>
<eigentuemerart>3000</eigentuemerart>
<istBestandteilVon xlink:href="urn:adv:oid:DEBBAL0600000Y09"/>
<benennt xlink:href="urn:adv:oid:DEBBAL0600000Y09"/>
</AX_Namensnummer>
</gml:featureMember>
</wfs:FeatureCollection>
</enthaelt>
здесь пространств имен:
<AX_Bestandsdatenauszug
xmlns="http://www.adv-online.de/namespaces/adv/gid/6.0"
xmlns:adv="http://www.adv-online.de/namespaces/adv/gid/6.0"
xmlns:gco="http://www.isotc211.org/2005/gco"
xmlns:gmd="http://www.isotc211.org/2005/gmd"
xmlns:gml="http://www.opengis.net/gml/3.2"
xmlns:ows="http://www.opengis.net/ows"
xmlns:wfs="http://www.adv-online.de/namespaces/adv/gid/wfs"
xmlns:wfsext="http://www.adv-online.de/namespaces/adv/gid/wfsext"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:ogc="http://www.adv-online.de/namespaces/adv/gid/ogc"
xsi:schemaLocation="http://www.adv-online.de/namespaces/adv/gid/6.0 NAS-Operationen.xsd">
my XPath:
.//{http://www.adv-online.de/namespaces/adv/gid/6.0}AX_Namensnummer/{http://www.adv-online.de/namespaces/adv/gid/6.0}istBestandteilVon[@{http://www.w3.org/1999/xlink}href='urn:adv:oid:DEBBAL0600000Y09']
Я получаю узел istBestandteilVon
, но мне нужно AX_Namensnummer
.
Что я делаю неправильно?
Я добавил все пространства имен. Каждый раз, когда я пытаюсь использовать префикс, он говорит: «префикс не найден в префиксной карте» :( – Yuli
Итак, там * есть * пространство имен по умолчанию. Ответ скорректирован для размещения 'adv =" http: //www.adv-online. de/namespaces/adv/gid/6.0 "' как пространство имен по умолчанию. – kjhughes
Настоятельно рекомендую вам просмотреть, как пространства имен работают в XML и XPath. Например, убедитесь, что вы понимаете [*** Как XPath обрабатывает пространства имен XML ** *] (http://stackoverflow.com/questions/40796231/how-does-xpath-deal-with-xml-namespaces) – kjhughes