我应该重写表还是可以在此上运行多个迭代器? XQuery的
问题描述:
伪表中RELAX NG紧凑:我应该重写表还是可以在此上运行多个迭代器? XQuery的
element books
element book
element publisher
element publisherinfo
表(但在挪威):
datatypes xsd = "http://www.w3.org/2001/XMLSchema-datatypes"
element bøker{
element bok{
attribute isbn{text},
element title{text},
element utgave{text},
(element forfatter{text}
|element redaktør{text}),
element utgivelsesår{xsd:int},
element fagfelt{text}*,
element referans{text}?,
element innholdsfortegnelse{
element komponent{text}+
},
element forlag{
text,
element url{text},
element kontaktinfo{
element telefon{xsd:integer}?,
element epost{text}?,
element adresse{
element gate{text},
element gatenmr{text},
element postnmr{xsd:int}
}?,
element kontaktperson{
element navn{
element fnavn{text}+,
element mnavn{text}?,
element enavn{text}
},
element adresse{
element gate{text},
element gatenmr{text},
element postnmr{xsd:int}
}?,
element telefon{xsd:integer}?
}?
}
}
}*
}
有没有办法通过这个迭代找到一个出版商,并检查他们是否有符合这些条件(出版商已经发布了有关主题(fagfelt)a和b)的书籍。
我想查找所有仅在这两个主题上发布图书的出版商。
我应该重写一下这个可能性还是有办法?
我没有经验使用XQuery和XML
答
如果我看了你的RelaxNG好吧,我想你可以得到你想要用下面的XPath表达式是什么:
//forlag[parent::bok[child::fagfelt='foo' and child::fagfelt='bar']]
,上面写着,“获取所有forlag
具有父项的元素bok
具有子项的子元素fagfelt
其文本内容为foo
的元素和子项fagfelt
元素的文本内容为bar
“。
返回一组所有匹配元素;你可以用XQuery(或XSLT)来遍历它。