2013-03-20 2 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? –

ответ

0

Из вашего комментария:

все, что мне нужно, это тег <s> в условиях t[@lemma = 'de']

В этом случае то, что вам нужно, это что-то вроде

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

An = сравнение, где одна сторона представляет собой набор узлов успешна, если любой узлов в наборе имеет требуемое значение.

+0

Ian, есть только один '' элемент в предоставленном XML-документе, поэтому комментарий OP вряд ли имеет смысл ... –

+0

@DimitreNovatchev в этом конкретном образце, да, но я взял его, чтобы быть представителем большего документа - I работа в вычислительной лингвистике, поэтому я понимаю, что корпус одного документа, который, в свою очередь, имеет одно предложение, не будет полным примером ... –

0

Вы можете получить родительский узел, как это:

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

Это как Unix оболочки:

cd .. 

обозначает директорию изменений для родительского реж

+0

Или '// * [t/@ lemma =" de "]' –

+0

Возврат xpath:// t [@ lemma = "of"]/.. Не то, что я хотел, хотел бы получить тег , но возврат этого xpath равен Grandpa

+0

И xpath: // * [t/@ lemma = "de"] очень похож на то, что я хочу, но не хочу возвращать тег , все, что мне нужно, это тег в условиях t [@ lemma = "de"] – Grandpa