【问题标题】:why my xpath query doesn't work?为什么我的 xpath 查询不起作用?
【发布时间】:2013-06-01 14:00:35
【问题描述】:

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

我必须找到球队数量为

【问题讨论】:

  • 相同的数据库但其他查询。需要帮助..
  • 然后尝试学习基本概念,这将帮助您远远超过希望有人为您解决这个特定问题。就像“授人以鱼/授人以渔”的寓言。

标签: xml database xpath dtd


【解决方案1】:

表达式@teams 表示名为teams 的属性。表达式 count(@teams) 计算具有该名称的属性的数量;自然,对于您输入中的每个游戏,它的计算结果为 1,因为您输入中的每个游戏都只有一个名为 teams 的属性。

如果您想计算名为 teams 的属性值中的标记数,那么您的错误是计算该属性的出现次数,而不是计算您要计算的次数。您需要找到一种方法来标记属性的值,然后计算标记,或者另一种方法来表达您需要测试的条件。 (提示:在空白规范化之后,具有单个标记的值将不包含空格。具有多个标记的值将。)

并听取 Marc B 的建议。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-10-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多