2017-02-17 11 views
1

私は子ノードistBestandteilVonはここで属性値urn:adv:oid:DEBBAL0600000Y09XPath経由で特定の属性を持つサブノードを持つ親ノードを選択しますか?

を持つノードAX_Namensnummerを必要とするが、私の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"> 

私の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が必要です。

私は間違っていますか?

答えて

0

What am I doing wrong?

  • 定義し、名前空間接頭辞を使用していません。
  • どの要素が名前空間に存在し、どの要素が存在しないかを認識しません。
  • デフォルトの名前空間が子要素に与える影響を理解していません。
  • 指定した 要素に存在しない値を@xlink:hrefに設定しています。
  • 述語を親要素ではなく子に配置する。 (名前空間整形式とあなたの更新問題のデフォルトの名前空間を反映するように更新される修理)このXMLについては

<?xml version="1.0" encoding="UTF-8"?> 
<AX_Namensnummer xmlns="http://www.adv-online.de/namespaces/adv/gid/6.0" 
       xmlns:gml="http://www.adv-online.de/namespaces/adv/gid/6.0" 
       xmlns:xlink="http://www.w3.org/1999/xlink" 
       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:DEBBAL0600000XOX"/> 
    <benennt xlink:href="urn:adv:oid:DEBBAL0600000Y09"/> 
</AX_Namensnummer> 

と、この名前空間宣言のため、

xlink="http://www.w3.org/1999/xlink" 
adv="http://www.adv-online.de/namespaces/adv/gid/6.0" 

このXPath、

//adv:AX_Namensnummer[adv:istBestandteilVon/@xlink:href='urn:adv:oid:DEBBAL0600000XOX'] 

必要に応じて親のAX_Namensnummer要素を選択します。

も参照してください:How does XPath deal with XML namespaces?

+0

私はすべての名前空間を追加しました。接頭辞を使用しようとするたびに、 "接頭辞の接頭辞には接頭辞が見つかりません" :( – Yuli

+0

したがって、デフォルトの名前空間は*です* 'adv =" http://www.adv-onlineに対応するように調整されました。 de/namespaces/adv/gid/6.0 ""を既定の名前空間として使用することをお勧めします – kjhughes

+0

XMLおよびXPathでの名前空間の動作を確認することを強くお勧めします。 *](http://stackoverflow.com/questions/40796231/how-does-xpath-deal-with-xml-namespaces) – kjhughes

関連する問題