【问题标题】:XQUERY return result in format <!ELEMENT dynosaur ($dynosaurName) +>XQUERY 返回结果格式为 <!ELEMENT dynosaur ($dynosaurName) +>
【发布时间】: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 中看到它们。可以说它返回 &lt;species age="84"&gt;Velociraptor&lt;/species&gt; 和另外两个。这将是来自for loop 的结果。我希望每个返回的物种都以这种格式打印。我的意思是for loopresult 我想返回&lt;!ELEMENT dynosaur ($dynosaur_name)+&gt;。其中$dynosaur_name 是恐龙的名字。
  • @Michael Kay 我想要的通常是以这种方式格式化结果......看起来像xml DTD
  • @Michael Kay 我完全重新编辑了这个问题,所以很清楚。我正在用XQUERY 输出做实验,这就是我要问的原因。
  • 对不起,我还是不明白你想达到什么目的,我不能再帮你了。

标签: xpath xquery flwor


【解决方案1】:

您可以尝试输出文本吗?

return concat("<!ELEMENT dynosaur (",$dynosaurName, ") +>")

【讨论】:

  • 谢谢!你能解释一下为什么没有,它就不能工作吗?如果我写("$dynosaurName")而不是(",$dynosaurName, ")会出错,格式化结果的链接也很好:)
猜你喜欢
  • 1970-01-01
  • 2010-11-15
  • 1970-01-01
  • 2015-06-07
  • 1970-01-01
  • 2015-06-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多