【发布时间】:2016-11-19 15:49:57
【问题描述】:
我在.xml 文件中使用XQUERY FLWOR 表达式:
for $dynosaur in doc("document.xml")//species
let $dynosaurName := $dynosaur/text() // keeping the dynosaurName as a variable
return $dynosaur
以上返回结果如下:
<species age="84">Velociraptor</species>
我需要格式化结果如下:
<!ELEMENT dynosaur (Velociraptor) +>
所以我正在尝试使用以下但不工作...
return <!ELEMENT dynosaur ({$dynosaurName}) +> //here i want that format but it return error
还有 xml 文件:
<?xml version="1.0"?>
<dinosauria>
<group>
<name>saurishia</name>
<subgroups>
<group>
<name>theropoda</name>
<subgroups>
<group>
<name>carnosaurs</name>
<speciesList>
<species age="74">Dyptosaurus</species>
<species age="170">Megalosaurus</species>
<species age="67">Tyrannosaurus</species>
</speciesList>
</group>
<group>
<name>coelurosauria</name>
<speciesList>
<species age="84">Velociraptor</species>
<species age="110">Deinonychus</species>
<species age="228">Eoraptor</species>
</speciesList>
</group>
</subgroups>
</group>
<group>
<name>sauropodomorpha</name>
<subgroups>
<group>
<name>sauropods</name>
<speciesList>
<species age="155">Brachiosaurus</species>
<species age="155">Camarasaurus</species>
</speciesList>
</group>
</subgroups>
</group>
</subgroups>
</group>
<group>
<name>ornithishia</name>
<subgroups></subgroups>
</group>
</dinosauria>
最后:
我找不到任何方法来返回那种类型的结果。我检查了很多链接考虑和这本书:http://www.datypic.com/books/xquery/chapter09.html
【问题讨论】:
-
我很难理解你的输入和你想要的结果之间的关系。您显然试图以 DTD 的形式生成输出,但它不是描述您的输入的 DTD。那是什么?换句话说,如果输入发生变化,对输出有何影响?
-
@Michael Kay 我将再举一个例子,所以请记住问题的 xml。假设此查询将返回 3
species,您可以在xml file中看到它们。可以说它返回<species age="84">Velociraptor</species>和另外两个。这将是来自for loop的结果。我希望每个返回的物种都以这种格式打印。我的意思是for loop的result我想返回<!ELEMENT dynosaur ($dynosaur_name)+>。其中$dynosaur_name是恐龙的名字。 -
@Michael Kay 我想要的通常是以这种方式格式化结果......看起来像
xml DTD -
@Michael Kay 我完全重新编辑了这个问题,所以很清楚。我正在用
XQUERY输出做实验,这就是我要问的原因。 -
对不起,我还是不明白你想达到什么目的,我不能再帮你了。