0

here is my DTD + xml:

<!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 Maccabi" winner = "Maccabi"/>
        <game teams = "Hapoel Beitar" winner = "Beitar"/>
        <game teams = "Maccabi ElitzorLavi" winner = "Maccabi"/>
        <game teams = "Elitzor Lavi Maccabi" winner = "Maccabi"/>
    </db>

i have to find the games such that number of teams is <2. now I expect to get only the first game. i tried this Xpath: db/game[count(/@teams)<2] but it gives me all games.. what is my mistake?

4

2 回答 2

1

您的 xpath 中有几个问题。您应该用 . 分隔元素和属性/./@name可以缩短为@nameonly。另外,如果你想得到名字作为结果,你必须/@name在最后使用:

db/team[count(owner)>1][not(@name=//game/@winner)]/@name
于 2013-06-05T17:41:03.577 回答
0

问:我必须找到拥有不止一个老板并且从未赢过比赛的球队。

尝试:

db/team[count(owner)>1][not(@name = //game/@winner)]
于 2013-06-05T17:41:39.910 回答