2013-06-05 5 views
-2

내 DTD와 XML :내 xpath 쿼리가 작동하지 않는 이유는 무엇입니까?

<!DOCTYPE test [ 
    <!ELEMENT team(owner+)> 
    <!ATTLIST team 
    name ID #REQUIRED 
    coach IDREF #REQUIRED 
    > 
    <!ELEMENT owner  (#PCDATA)> 
    <!ELEMENT coach EMPTY> 
    <!ATTLIST coach 
    name ID #REQUIRED 
    > 
    <!ELEMENT game EMPTY> 
    <!ATTLIST game 
    teams IDREFS #REQUIRED 
    winner IDREF #REQUIRED 
    > 
    <!ELEMENT db (coach*,team*,match*)> 
]> 


<?xml version="1.0" ?> 

    <db> 
     <team name = "Hapoel" coach = "Abuksis"> 
      <owner> Eli Tabib</owner> 
     </team> 
     <team name = "Maccabi" coach = "Blat"> 
      <owner> Shimi</owner> 
      <owner> Federman</owner> 
     </team> 
     <team name = "Beitar" coach = "Eli Cohen"> 
      <owner> Arkadi</owner> 
     </team> 
     <team name = "ElitzorLavi" coach = "Eli"> 
      <owner> Zehava</owner> 
      <owner> Dani</owner> 
     </team> 
     <coach name = "Abuksis"/> 
     <coach name = "Eli Cohen"/> 
     <coach name = "Blat"/> 
     <coach name = "Eli"/> 
     <game teams = "Hapoel" winner = "Maccabi"/> 
     <game teams = "Hapoel Beitar" winner = "Beitar"/> 
     <game teams = "Maccabi ElitzorLavi" winner = "Maccabi"/> 
     <game teams = "Elitzor Lavi Maccabi" winner = "Maccabi"/> 
    </db> 

내가이 게임을 찾을 필요가 같은 팀의 수는 2 <가 지금은 첫 번째 게임을 얻을 것으로 기대입니다. 나는이 Xpath를 시도한다 : db/game [count (/ @ teams) < 2] 그러나 그것은 나에게 모든 게임을 준다. 내 실수는 무엇입니까?

+0

가능한 복제본 [xpath - 왜 내 쿼리가 작동하지 않습니까?] (http://stackoverflow.com/questions/16946344/xpath-why-my-query-does-not-works) –

+0

동일한 db이지만 다른 쿼리 . 도움이 필요합니다. – user2456731

+0

다음 기본 개념을 배우려고 시도합니다.이 개념은 누군가가 당신을 위해이 특정 문제를 해결하기를 원할뿐 아니라 더 많은 것을 도울 것입니다. 정확히 "사람에게 물고기 줄/남자에게 물고기를 가르치기"비유와 비슷합니다. –

답변

0

표현식 @teamsteams이라는 속성을 나타냅니다. 표현식 수 (@teams)는 해당 이름의 속성 수를 계산합니다. 자연적으로 당신의 입력에있는 각 게임은 teams이라는 정확히 하나의 속성을 가지고 있기 때문에 당신의 입력에서 각 게임마다 1로 평가됩니다.

팀이라는 속성의 값에서 토큰 수를 계산하려는 경우 실수를 계산하는 대신 계산할 항목을 계산합니다. 속성의 값을 토큰 화하고 토큰을 계산하거나 테스트해야하는 조건을 표현하는 다른 방법을 찾는 방법을 찾아야합니다. 힌트 : 공백 문자를 정규화 한 후 하나의 토큰을 갖는 값에는 공백이 포함되지 않으며, 다중 토큰을 갖는 값은 공백을 포함 할 것입니다.

그리고 Marc B의 조언에 유의하십시오.

관련 문제