2016-04-28 24 views
1

私は子要素が存在しない場合のみ、XPath経由で属性を選択しますか?

<asdiOutput xmlns="http://tfm.faa.gov/tfms/TFMS_XIS" xmlns:nxce="http://tfm.faa.gov/tfms/NasXCoreElements" 
    xmlns:mmd="http://tfm.faa.gov/tfms/MessageMetaData" 
    xmlns:nxcm="http://tfm.faa.gov/tfms/NasXCommonMessages" 
    xmlns:idr="http://tfm.faa.gov/tfms/TFMS_IDRS" 
    xmlns:xis="http://tfm.faa.gov/tfms/TFMS_XIS" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://tfm.faa.gov/tfms/TFMS_XIS http://localhost:58489/tfms/schema/TFMS_XIS.xsd" 
    timestamp="2011-03-15T23:57:59Z"> 
    <asdiMessage sourceFacility="CCZM" sourceTimeStamp="2011-03-15T23:57:27Z" trigger="TZ"> 
    <trackInformation> 
     <nxcm:aircraftId>UAL966</nxcm:aircraftId> 
     <nxcm:speed>470</nxcm:speed> 
     <nxcm:reportedAltitude> 
     <nxce:assignedAltitude> 
      <nxce:simpleAltitude>350</nxce:simpleAltitude> 
     </nxce:assignedAltitude> 
     </nxcm:reportedAltitude> 
     <nxcm:position> 
     <nxce:latitude> 
      <nxce:latitudeDMS degrees="45" minutes="40" direction="NORTH"/> 
     </nxce:latitude> 
     <nxce:longitude> 
      <nxce:longitudeDMS degrees="056" minutes="58" direction="WEST"/> 
     </nxce:longitude> 
     </nxcm:position> 
    </trackInformation> 
    </asdiMessage> 
    <asdiMessage sourceFacility="CCM" sourceTimeStamp="2015-03-15T23:57:27Z" trigger="TZ"> 
    <trackposition> 
     <nxcm:aircraftId>UAL936</nxcm:aircraftId> 
     <nxcm:speed>470</nxcm:speed> 
     <nxcm:reportedAltitude> 
     <nxce:assignedAltitude> 
      <nxce:simpleAltitude>350</nxce:simpleAltitude> 
     </nxce:assignedAltitude> 
    </nxcm:reportedAltitude> 
     <nxcm:position> 
     <nxce:latitude> 
      <nxce:latitudeDMS degrees="44" minutes="43" direction="NORTH"/> 
     </nxce:latitude> 
     <nxce:longitude> 
      <nxce:longitudeDMS degrees="062" minutes="42" direction="WEST"/> 
     </nxce:longitude> 
     </nxcm:position> 
    </trackposition> 
    </asdiMessage> 
</asdiOutput> 

以下のように私は、値 sourceFacility="CCZM"を抽出したいsourceTimeStamp="2011-03-15T23:57:27Z"、およびtrigger="TZ"

しかし、XPathは子供を持っているasdiMessageの値を返すべきではありませんされたサンプルのXMLフラグメントを持っています要素trackpositionとなります。 したがって、次の値は返されません。子要素のため、 asdiMessage sourceFacility="CCM" sourceTimeStamp="2015-03-15T23:57:27Z" trigger="TZ"です。

私はこの/asdiOutput/asdiMessage[not(contains(trackposition))]を試してみましたが、これはルート要素の終了タグでタイプミスを修正し、すべての

+0

これまでに試したことはありますか?デフォルトの名前空間について知っていて、プログラミング言語で同じものをハンドリングする方法を知っていますか? –

+0

謝罪私は私の試しで私の質問を更新しました –

答えて

0

最初は何も返しません:

</asdiOuput>が作る、</asdiOutput>

次でなければなりませんhttp://tfm.faa.gov/tfms/TFMS_XISの名前空間接頭辞を定義していることを確認してください。

xis="http://tfm.faa.gov/tfms/TFMS_XIS" 

次に、このXPath 、

/xis:asdiOutput/xis:asdiMessage[not(xis:trackposition)]/@sourceFacility 

は、要求に応じて"CCZM"を選択します。

同様にsourceTimeStamptriggerのXPathを作成できます。

+0

こんにちはkjhughesどのようにXMLからasdiOutputがxisと等しい名前空間にあるのか分かりました –

+0

ルート要素には、デフォルトの名前空間宣言があります: 'xmlns =" http ://tfm.faa.gov/tfms/TFMS_XIS " – kjhughes

+0

助けてくれてありがとう私はちょうどあなたがこの答えをとても速く得たかと思っていました。私のメモ帳xpathはxpathを取得するのに役立つオンラインツールです。 –

関連する問題