XQUERY:如何使用目录中的所有元素进行转换
我正在构建一个应用程序,显然,我需要使用特定的xslt将下面$xml中的所有文件从xml转换为html。然后我希望它们被输出为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
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或类似内容的时间。