Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
XQUERY:如何使用目录中的所有元素进行转换_Xquery_Exist Db - Fatal编程技术网

XQUERY:如何使用目录中的所有元素进行转换

XQUERY:如何使用目录中的所有元素进行转换,xquery,exist-db,Xquery,Exist Db,我正在构建一个应用程序,显然,我需要使用特定的xslt将下面$xml中的所有文件从xml转换为html。然后我希望它们被输出为 declare function app:XMLtoHTML-forAll ($node as node(), $model as map(*), $query as xs:string?){ let $ref := xs:string(request:get-parameter("document", "")) let $xml := doc(co

我正在构建一个应用程序,显然,我需要使用特定的xslt将下面$xml中的所有文件从xml转换为html。然后我希望它们被输出为
  •   declare function app:XMLtoHTML-forAll ($node as node(), $model as map(*), $query as xs:string?){
        let $ref := xs:string(request:get-parameter("document", ""))
        let $xml := doc(concat("/db/apps/BookOfOrders/data/edition/",$ref))
        let $xsl := doc("/db/apps/BookOfOrders/resources/xslt/xmlToHtml.xsl")
        let $params :=
        <parameters>
           {for $p in request:get-parameter-names()
            let $val := request:get-parameter($p,())
            where  not($p = ("document","directory","stylesheet"))
            return
               <param name="{$p}"  value="{$val}"/>
           }
        </parameters>
           for $doc in collection("/db/apps/BookOfOrders/data/edition")/tei:TEI
    
                return
    
                <li> {transform:transform($xml, $xsl, $params)} </li>
        }; 
    
    声明函数app:xmltohtmforall($node作为node(),$model作为map(*),$query作为xs:string?){
    让$ref:=xs:string(请求:获取参数(“文档”),“”)
    让$xml:=doc(concat(“/db/apps/BookOfOrders/data/edition/”,$ref))
    让$xsl:=doc(“/db/apps/BookOfOrders/resources/xslt/xmlToHtml.xsl”)
    让$params:=
    {对于请求中的$p:get-parameter-names()
    let$val:=请求:获取参数($p,())
    其中不($p=(“文档”、“目录”、“样式表”))
    返回
    }
    对于集合中的$doc(“/db/apps/BookOfOrders/data/edition”)/tei:tei
    返回
    
  • {transform:transform($xml,$xsl,$params)}
  • };
    但是,对于我在此文件夹中的每个文档,My函数返回空的
  • -元素。 有人能告诉我我做错了什么吗


    小编辑:它也不会使用所有文件,只会随机选择一个文件并反复转换…

    我首先要验证分配给
    $xml

    let $xml := doc(concat("/db/apps/BookOfOrders/data/edition/",$ref))
    
    并将其与for循环中分配给
    $doc
    的内容进行比较:

    for $doc in collection("/db/apps/BookOfOrders/data/edition")/tei:TEI
    
    为什么要迭代每个
    $doc
    ,然后转换相同的
    $xml

    <li> {transform:transform($xml, $xsl, $params)} </li>
    
  • {transform:transform($xml,$xsl,$params)}

  • 您是否打算改为转换
    $doc
    ?也许还可以使用
    $ref
    来构造集合URI???

    不幸的是,我现在无法检查。我想我应该做transform:transform($doc、$xsl、$params)。在此之前:非常感谢您的想法:)您关于转换
    $doc
    而不是
    $xml
    的想法绝对正确。现在我看到这些文件不是按顺序转换的,而是按其他方式转换的。可能是添加到DB或类似内容的时间。