2016-11-07 47 views
1

伪表中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

回答

1

如果我看了你的RelaxNG好吧,我想你可以得到你想要用下面的XPath表达式是什么:

//forlag[parent::bok[child::fagfelt='foo' and child::fagfelt='bar']] 

,上面写着,“获取所有forlag具有父项的元素bok具有子项的子元素fagfelt其文本内容为foo的元素和子项fagfelt元素的文本内容为bar“。

返回一组所有匹配元素;你可以用XQuery(或XSLT)来遍历它。

相关问题