2013-03-20 126 views
0

我有一個問題來獲取我選擇的節點的父節點。 我正在使用查詢://t [@ lemma =「de」]。 但我想獲取包含的元素。 我不太瞭解xpath。 現在我使用兩個查詢來嘗試解決問題,但我認爲這不是必需的。 我的XML:Xpath:如何獲取我選擇的節點的父節點?

<?xml version="1.0" encoding="UTF-8"?> 
<xml> 
    <corpus> 
     <body> 
      <s id="s16" ref="16" source="Running text" forest="1" text="DECLARARAL A Extinção da Punibilidade do Réu, Em Razão da Prescrição da Pretensão Punitiva, Fulcro Em os ARTIGOS 107, Inciso IV, Combinado Com O ARTIGO 109, Inciso VI (Redação Anterior à Lei Nº."> 
       <graph root="s16_500"> 
        <terminals> 
         <t id="s16_1" word="DECLARARAL" lemma="DECLARARAL" pos="prop" morph="--" extra="cjt-head cjt-head-X" /> 
         <t id="s16_2" word="A" lemma="o" pos="art" morph="F S" extra="artd" /> 
         <t id="s16_3" word="Extinção" lemma="Extinção" pos="prop" morph="--" extra="cjt-X" /> 
         <t id="s16_4" word="de" lemma="de" pos="prp" morph="--" extra="sam-" /> 
         <t id="s16_5" word="a" lemma="o" pos="art" morph="F S" extra="-sam artd" /> 
         <t id="s16_6" word="Punibilidade" lemma="punibilidade" pos="n" morph="F S" extra="prop percep-f" /> 
         <t id="s16_7" word="de" lemma="de" pos="prp" morph="--" extra="sam-" /> 
         <t id="s16_8" word="o" lemma="o" pos="art" morph="M S" extra="-sam artd" /> 
         <t id="s16_9" word="Réu" lemma="réu" pos="n" morph="M S" extra="prop H" /> 
         <t id="s16_10" word="," lemma="--" pos="pu" morph="--" extra="--" /> 
         <t id="s16_11" word="Em_Razão" lemma="Em_Razão" pos="prop" morph="--" extra="cjt-X" /> 
         <t id="s16_12" word="de" lemma="de" pos="prp" morph="--" extra="sam-" /> 
         <t id="s16_13" word="a" lemma="o" pos="art" morph="F S" extra="-sam artd" /> 
         <t id="s16_14" word="Prescrição" lemma="prescrição" pos="n" morph="F S" extra="prop conv" /> 
         <t id="s16_15" word="de" lemma="de" pos="prp" morph="--" extra="sam-" /> 
         <t id="s16_16" word="a" lemma="o" pos="art" morph="F S" extra="-sam artd" /> 
         <t id="s16_17" word="Pretensão_Punitiva" lemma="Pretensão_Punitiva" pos="prop" morph="--" extra="--" /> 
         <t id="s16_18" word="," lemma="--" pos="pu" morph="--" extra="--" /> 
         <t id="s16_19" word="Fulcro" lemma="fulcro" pos="n" morph="M S" extra="cjt-X part-build Labs" /> 
         <t id="s16_20" word="Em" lemma="em" pos="prp" morph="--" extra="sam-" /> 
         <t id="s16_21" word="os" lemma="o" pos="art" morph="M P" extra="artd -sam" /> 
         <t id="s16_22" word="ARTIGOS_107" lemma="ARTIGOS_107" pos="prop" morph="--" extra="--" /> 
         <t id="s16_23" word="," lemma="--" pos="pu" morph="--" extra="--" /> 
         <t id="s16_24" word="Inciso_IV" lemma="Inciso_IV" pos="prop" morph="--" extra="cjt-X" /> 
         <t id="s16_25" word="," lemma="--" pos="pu" morph="--" extra="--" /> 
         <t id="s16_26" word="Combinado_Com" lemma="Combinado_Com" pos="prop" morph="--" extra="cjt-X" /> 
         <t id="s16_27" word="O" lemma="o" pos="art" morph="M S" extra="artd" /> 
         <t id="s16_28" word="ARTIGO_109" lemma="ARTIGO_109" pos="prop" morph="--" extra="cjt-X" /> 
         <t id="s16_29" word="," lemma="--" pos="pu" morph="--" extra="--" /> 
         <t id="s16_30" word="Inciso_VI" lemma="Inciso_VI" pos="prop" morph="--" extra="cjt-X" /> 
         <t id="s16_31" word="(" lemma="--" pos="pu" morph="--" extra="--" /> 
         <t id="s16_32" word="Redação_Anterior_Ã_Lei_Nº" lemma="Redação_Anterior_Ã_Lei_Nº" pos="prop" morph="--" extra="cjt-X" /> 
         <t id="s16_33" word="." lemma="--" pos="pu" morph="--" extra="--" /> 
        </terminals> 

        <nonterminals> 
         <nt id="s16_500" cat="s"> 
          <edge label="X" idref="s16_501" /> 
         </nt> 
         <nt id="s16_501" cat="par"> 
          <edge label="CJT" idref="s16_1" /> 
          <edge label="CJT" idref="s16_502" /> 
          <edge label="PU" idref="s16_10" /> 
          <edge label="CJT" idref="s16_507" /> 
          <edge label="PU" idref="s16_18" /> 
          <edge label="CJT" idref="s16_512" /> 
          <edge label="PU" idref="s16_23" /> 
          <edge label="CJT" idref="s16_24" /> 
          <edge label="PU" idref="s16_25" /> 
          <edge label="CJT" idref="s16_26" /> 
          <edge label="CJT" idref="s16_515" /> 
          <edge label="PU" idref="s16_29" /> 
          <edge label="CJT" idref="s16_30" /> 
          <edge label="PU" idref="s16_31" /> 
          <edge label="CJT" idref="s16_32" /> 
          <edge label="PU" idref="s16_33" /> 
         </nt> 
         <nt id="s16_502" cat="np"> 
          <edge label="DN" idref="s16_2" /> 
          <edge label="H" idref="s16_3" /> 
          <edge label="DN" idref="s16_503" /> 
         </nt> 
         <nt id="s16_503" cat="pp"> 
          <edge label="H" idref="s16_4" /> 
          <edge label="DP" idref="s16_504" /> 
         </nt> 
         <nt id="s16_504" cat="np"> 
          <edge label="DN" idref="s16_5" /> 
          <edge label="H" idref="s16_6" /> 
          <edge label="DN" idref="s16_505" /> 
         </nt> 
         <nt id="s16_505" cat="pp"> 
          <edge label="H" idref="s16_7" /> 
          <edge label="DP" idref="s16_506" /> 
         </nt> 
         <nt id="s16_506" cat="np"> 
          <edge label="DN" idref="s16_8" /> 
          <edge label="H" idref="s16_9" /> 
         </nt> 
         <nt id="s16_507" cat="np"> 
          <edge label="H" idref="s16_11" /> 
          <edge label="DN" idref="s16_508" /> 
         </nt> 
         <nt id="s16_508" cat="pp"> 
          <edge label="H" idref="s16_12" /> 
          <edge label="DP" idref="s16_509" /> 
         </nt> 
         <nt id="s16_509" cat="np"> 
          <edge label="DN" idref="s16_13" /> 
          <edge label="H" idref="s16_14" /> 
          <edge label="DN" idref="s16_510" /> 
         </nt> 
         <nt id="s16_510" cat="pp"> 
          <edge label="H" idref="s16_15" /> 
          <edge label="DP" idref="s16_511" /> 
         </nt> 
         <nt id="s16_511" cat="np"> 
          <edge label="DN" idref="s16_16" /> 
          <edge label="H" idref="s16_17" /> 
         </nt> 
         <nt id="s16_512" cat="np"> 
          <edge label="H" idref="s16_19" /> 
          <edge label="DN" idref="s16_513" /> 
         </nt> 
         <nt id="s16_513" cat="pp"> 
          <edge label="H" idref="s16_20" /> 
          <edge label="DP" idref="s16_514" /> 
         </nt> 
         <nt id="s16_514" cat="np"> 
          <edge label="DN" idref="s16_21" /> 
          <edge label="H" idref="s16_22" /> 
         </nt> 
         <nt id="s16_515" cat="np"> 
          <edge label="DN" idref="s16_27" /> 
          <edge label="H" idref="s16_28" /> 
         </nt> 
        </nonterminals> 
       </graph> 
      </s> 
     </body> 
    </corpus> 
</xml> 

有人可以幫助我嗎?

+1

你究竟想要選擇什麼? ''元素?或者你在談論遍歷id/idref鏈接? – 2013-03-20 22:48:27

回答

0

從您的評論:

所有我需要的是t[@lemma = 'de']

在這種情況下的條件下,標籤<s>你需要的是像

//s[graph/terminals/t/@lemma = 'de'] 

的=比較,其中一個邊是一個節點集成功,如果任何的集合中的節點具有所需的值。

+0

伊恩,在提供的XML文檔中只有一個''''元素,所以OP的評論幾乎沒有道理...... – 2013-03-21 03:42:00

+0

@DimitreNovatchev在這個特定的示例中,是的,但我認爲它代表了一個更大的文檔 - 我在計算語言學工作,所以我認識到一個文檔的語料庫反過來有一個句子不會是一個完整的例子...... – 2013-03-21 10:13:03

0

你可以得到父節點是這樣的:

//t[@lemma="de"]/.. 

這就像Unix外殼:

cd .. 

代表變化目錄的父目錄

+0

或'// * [t/@ lemma =「de」]' – 2013-03-20 22:50:09

+0

xpath返回:// t [@ lemma =「of」]/..不是我想要的,我想要標籤 ,但是這個xpath的返回值是 Grandpa 2013-03-20 22:59:27

+0

而xpath:// * [t/@ lemma =「de」]與我想要的非常相似,但不想返回標籤,我所需要的只是標記在t [@ lemma =「de」]的條件下 – Grandpa 2013-03-20 23:05:15

相關問題