1

私はこの XML でさまざまな選択をしていますが、ほとんどの場合、最も単純な解決策を実行したかどうか確信が持てず、そのうちの 2 つについては、実用的な解決策を提供できません。

<?xml version="1.0" ?>
<!DOCTYPE list[
<!ELEMENT list(man|woman)*>
<!ELEMENT man(sons,daughters)>
<!ATTLIST man name CDATA #REQUIRED>
<!ELEMENT man(sons,daughters)>
<!ATTLIST woman name CDATA #REQUIRED>
<!ELEMENT sons(man)*>
<!ELEMENT daughters(woman)*>

<list>
    <man name="Jean-Bernard">
        <sons>
            <man name="Marc-Antoine"/>
        </sons>
        <daughters>
            <woman name="Marie-Jeanne">
                <sons/>
                <daughters>
                    <woman name="Anne-Sophie"/>
                </daughters>
            </woman>
            <woman name="Rose-Marie">
                <daughters>
                    <woman name="Marie-Cécile"/>
                </daughters>
            </woman>
        </daughters>
    </man>
    <woman name="Marie-Jeanne">
        <sons>
            <man name="Ghislain-Auguste">
                <sons/>
            </man>  
        </sons>
        <daughters>
            <woman name="Rita-Lise">
            <sons>
                <man name="Alain-Luc"/>
                <man name="Jules-Edouard"/>
            </sons>
            </woman>
        </daughters>
    </woman>
</list>

私がやった事 :

  • すべての女性を選択://woman
  • 名前が「Marie Jeanne」の女性をすべて選択://woman[@name='Marie-Jeanne']
  • 名前に「Marie」を含むすべての女性を選択://woman[contains(@name,Marie)]

私がやったことですが、これは正確ではないか、もっと良いと思います:

  • 少なくとも 2 人の子供を持つすべての女性または男性を選択する ://*[sum(count(sons/man), count(daughters/woman)) >= 2]
  • 祖父母であるすべての女性または男性を選択する:私はこれに完全に行き詰まっています。未知数でどのように選択できるかわかりません。私の考えでは、これはそのようなものです: //*/*/*/*. . . 始め方がわかりません。
4

2 に答える 2

3

少なくとも 2 人の子供を持つすべての女性または男性を選択する:

//*[(self::man or self::woman) and count(*/*) > 1]

祖父母であるすべての女性または男性を選択する

//*[(self::man or self::woman) and */*/*/*]
于 2013-01-23T01:52:06.883 に答える
1

祖父母であるすべての女性または男性を簡単に選択できるようにするには、「自己」宣言XPath を使用して複数のタグを選択できます

//*[count(*[self::sons or self::daughters]/*[self::man or self::woman]/*[self::sons or self::daughters]/*[self::man or self::woman]) >= 1]
于 2013-01-22T22:52:09.030 に答える