Xquery MarkLogic 9中的FLWOR在chrome中不显示结果

Xquery MarkLogic 9中的FLWOR在chrome中不显示结果,xquery,marklogic,marklogic-9,Xquery,Marklogic,Marklogic 9,您好,我正在使用MarkLogic 9并尝试使用XQuery和FLWOR语句构建一个应用程序。我设置了http服务器。我在8031端口测试了一个带有静态文本的简单页面,效果很好。我还测试了一个 查询控制台中的FLWOR语句也可以正常工作。但当我把它结合起来时,它就不起作用了 我希望你能帮助我 曼尼,谢谢 埃里克 花卉声明ML9.0 for $i in /scope/item let $sscc := $i/transaction/sscc/text() return <tr><

您好,我正在使用MarkLogic 9并尝试使用XQuery和FLWOR语句构建一个应用程序。我设置了http服务器。我在8031端口测试了一个带有静态文本的简单页面,效果很好。我还测试了一个 查询控制台中的FLWOR语句也可以正常工作。但当我把它结合起来时,它就不起作用了

我希望你能帮助我

曼尼,谢谢

埃里克

花卉声明ML9.0

for $i in /scope/item
let $sscc := $i/transaction/sscc/text()
return <tr><td>{$sscc}</td></tr>
用于/scope/item中的$i
让$sscc:=$i/transaction/sscc/text()
返回{$sscc}
测试.XQY

xquery version "1.0-ml";
xdmp:set-response-content-type("text/html; charset=utf-8"),
'<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">',
<html xmlns="http://www.w3.org/1999/xhtml">
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>Find my orders</title>
  </head>
  <body>
    <table>
      <tr><th>SSCC</th></tr>
      {
        for $i in /scope/item
        let $sscc := $i/transaction/sscc/text()
        return <tr><td>{$sscc}</td></tr>
      }
    </table>
  </body>
</html>
xquery版本“1.0-ml”;
xdmp:set响应内容类型(“text/html;charset=utf-8”),
'',
找到我的订单
SSCC
{
对于/范围/项目中的$i
让$sscc:=$i/transaction/sscc/text()
返回{$sscc}
}
HTTP应用程序页面

XML源文件

<scope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    <item>
        <transaction>
            <type>CI</type>
            <sscc>00000379471900000025</sscc>
            <location>4260210630688</location>
            <device>VISTALINK.004</device>
            <date>2017-04-25</date>
            <time>02:15:33</time>
            <gmtOffset>+02:00</gmtOffset>
            <actorId>155081</actorId>
        </transaction>
        <order>
            <orderNumber>3794719</orderNumber>
        </order>
        <load>
            <rti>
                <ean>8714548186004</ean>
                <grai>8003087145481860040019877322</grai>
                <column>2</column>
                <size>
                    <width>1900</width>
                    <height>95</height>
                    <depth>0</depth>
                </size>
                <position>
                    <x>2062,48707520218</x>
                    <y>2015,24337520512</y>
                    <z>0</z>
                </position>
            </rti>
            <rti>
                <ean>8714548106002</ean>
                <grai>8003087145481060020016434653</grai>
                <column>0</column>
                <size>
                    <width>1900</width>
                    <height>95</height>
                    <depth>0</depth>
                </size>
                <position/>
            </rti>
            <rti>
                <ean>8714548186004</ean>
                <grai>8003087145481860040012803719</grai>
                <column>2</column>
                <size>
                    <width>1900</width>
                    <height>95</height>
                    <depth>0</depth>
                </size>
                <position>
                    <x>2064,20629390666</x>
                    <y>2124,57539157396</y>
                    <z>0</z>
                </position>
            </rti>
            <rti>...</rti>
            <rti>...</rti>
            <rti>...</rti>
            <rti>...</rti>
            <rti>...</rti>
        </load>
    </item>
</scope>

词
00000379471900000025
4260210630688
VISTALINK.004
2017-04-25
02:15:33
+02:00
155081
3794719
8714548186004
8003087145481860040019877322
2.
1900
95
0
2062,48707520218
2015,24337520512
0
8714548106002
8003087145481060020016434653
0
1900
95
0
8714548186004
8003087145481860040012803719
2.
1900
95
0
2064,20629390666
2124,57539157396
0
...
...
...
...
...

您忘了提及您确实获得的结果的一些确切细节,但我猜,看看您的代码,您的HTML页面确实显示了,但没有预期的行。这可能是由于名称空间

您已经在文本XHTML中嵌入了FLWOR语句。这通常很好,但由于XHTML带有默认的名称空间声明,因此相同XML中包含的XPath表达式将使用相同的名称空间声明进行解释。这意味着像
/scope/item
这样的XPath表达式在您的例子中实际上被解释为
/xhtml:scope/xhtml:item

最简单的方法是预先获取项目,和/或使用通配符前缀。也许是这样的:

let $items := fn:collection()/scope/item
return
  <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
      <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
      <title>Find my orders</title>
    </head>
    <body>
      <table>
        <tr><th>SSCC</th></tr>
        {
          for $i in $items
          let $sscc := $i/*:transaction/*:sscc/text()
          return <tr><td>{$sscc}</td></tr>
        }
      </table>
    </body>
  </html>
let$items:=fn:collection()/scope/item
回来
找到我的订单
SSCC
{
对于$i,在$items中
让$sscc:=$i/*:transaction/*:sscc/text()
返回{$sscc}
}

您忘了提到一些关于您得到的结果的确切细节,但是我猜,看看您的代码,您的HTML页面确实显示了,但是没有预期的行。这可能是由于名称空间

您已经在文本XHTML中嵌入了FLWOR语句。这通常很好,但由于XHTML带有默认的名称空间声明,因此相同XML中包含的XPath表达式将使用相同的名称空间声明进行解释。这意味着像
/scope/item
这样的XPath表达式在您的例子中实际上被解释为
/xhtml:scope/xhtml:item

最简单的方法是预先获取项目,和/或使用通配符前缀。也许是这样的:

let $items := fn:collection()/scope/item
return
  <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
      <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
      <title>Find my orders</title>
    </head>
    <body>
      <table>
        <tr><th>SSCC</th></tr>
        {
          for $i in $items
          let $sscc := $i/*:transaction/*:sscc/text()
          return <tr><td>{$sscc}</td></tr>
        }
      </table>
    </body>
  </html>
let$items:=fn:collection()/scope/item
回来
找到我的订单
SSCC
{
对于$i,在$items中
让$sscc:=$i/*:transaction/*:sscc/text()
返回{$sscc}
}

谢谢,这帮助了我一个lotgrtjn,你如何处理花卉声明的嵌套?谢谢,这帮助了我一个lotgrtjn,你如何处理花卉声明的嵌套?