我在这个 XML 上做出了不同的选择,但对于大多数人来说,我不确定我是否完成了最简单的解决方案,并且对于其中两个我无法提供有效的解决方案。
<?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]
- 选择所有祖父母的女性或男性:我完全被这个困住了,我看不出我怎么能在这么多未知的情况下选择。在我看来是这样的:
//*/*/*/*
。. . 我不明白如何开始。