【问题标题】:My query in not presenting the results of the xml我的查询未显示 xml 的结果
【发布时间】:2018-08-25 10:01:55
【问题描述】:

我正在尝试对我的工作进行查询,在搜索代码后显示制作人的姓名。当我尝试运行查询时,它没有显示任何结果。有什么帮助吗? PS- 我正在使用 BaseX 运行查询

查询

for $x in 
doc("macaMoimenta.xml")/moimenta/produtores/produtor
where $x/codigo="PR001" 
return $x/nome

我的 XML 文件

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="style_macaMoimenta.xsl"?>
<moimenta xmlns="http://www.macamoimenta.pt/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:gnr="http://www.macamoimenta.pt/general" xmlns:clt="http://www.macamoimenta.pt/lote"
xmlns:prc="http://www.macamoimenta.pt/precario"
xmlns:clb="http://www.macamoimenta.pt/calibragem"
xsi:schemaLocation="http://www.macamoimenta.pt/ moimenta.xsd">
<produtores>
    <produtor>
        <codigo>PR001</codigo>
        <nome>Antonio Manuel</nome>
        <data_registo>2018-03-20</data_registo>
        <morada>
            <gnr:rua>Rua Antonio Manuel</gnr:rua>
            <gnr:numero>69</gnr:numero>
            <gnr:cod_postal>4569-123</gnr:cod_postal>
        </morada>
        <colheita ano="2018" qualidade="Ambrosia">
            <cod_colheita>FE23569</cod_colheita>
            <valor>
                <prc:preco_valor valor="0-60">
                    <prc:preco>0.10</prc:preco>
                </prc:preco_valor>
                <prc:preco_valor valor="60-65">
                    <prc:preco>0.13</prc:preco>
                </prc:preco_valor>
                <prc:preco_valor valor="65-70">
                    <prc:preco>0.17</prc:preco>
                </prc:preco_valor>
                <prc:preco_valor valor="DEFEITO">
                    <prc:preco>0.05</prc:preco>
                </prc:preco_valor>
            </valor>
            <lotes>
                <lote>
                    <clt:n_lote>236598</clt:n_lote>
                    <clt:quantidade>2500</clt:quantidade>
                    <clt:calibragem>
                        <clb:calib valor="0-60">
                            <clb:quantidade>1000</clb:quantidade>
                        </clb:calib>
                        <clb:calib valor="60-65">
                            <clb:quantidade>1300</clb:quantidade>
                        </clb:calib>
                        <clb:calib valor="DEFEITO">
                            <clb:quantidade>200</clb:quantidade>
                        </clb:calib>
                    </clt:calibragem>
                </lote>
            </lotes>
        </colheita>

    </produtor>
</produtores>

我不明白为什么它不起作用,因为一切看起来都很好。 非常感谢! ;)

【问题讨论】:

    标签: xml xquery


    【解决方案1】:

    为您的查询添加前缀

    declare default element namespace "http://www.macamoimenta.pt/";
    

    (见https://www.w3.org/TR/xquery-31/#id-default-namespace)你会发现路径开始选择一些东西。

    https://xqueryfiddle.liberty-development.net/pPgCcon 有一个在线示例,尽管使用return data($x/nome) 而不是return $x/nomehttps://xqueryfiddle.liberty-development.net/pPgCcon/1 可能更明显地显示结果。

    【讨论】:

    • 非常感谢!我能问一下为什么我需要把declare default element namespace "http://www.macamoimenta.pt/";放在前面吗?
    • 输入文档根元素上的默认命名空间声明 xmlns="http://www.macamoimenta.pt/" 将所有名称不带前缀的元素放在该命名空间 http://www.macamoimenta.pt/ 中,并且要选择命名空间中的元素,您需要在其中声明它XQuery,没有像 moimenta/produtores/produtor 这样的路径选择没有命名空间中的此类元素(例如,如果您的 XML 没有 xmlns="http://www.macamoimenta.pt/")。
    猜你喜欢
    • 1970-01-01
    • 2021-05-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-02
    • 1970-01-01
    • 2011-10-02
    相关资源
    最近更新 更多