xquery:如何以相同的方式转换多个文件,但对一个文件执行特殊操作
这是我将目录中的每个文件转换为旋转木马(bootstrap)的转换,但是,对于第一个文件(Folio001.xml),我需要将类“active”添加到代码的最后一行xquery:如何以相同的方式转换多个文件,但对一个文件执行特殊操作,xquery,exist-db,Xquery,Exist Db,这是我将目录中的每个文件转换为旋转木马(bootstrap)的转换,但是,对于第一个文件(Folio001.xml),我需要将类“active”添加到代码的最后一行 declare function app:XMLtoHTML-forAll ($node as node(), $model as map(*), $query as xs:string?){ let $ref := xs:string(request:get-parameter("document", ""))
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
<div class="carousel-item"> {transform:transform($doc, $xsl, $params)} </div>
};
声明函数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($doc,$xsl,$params)}
};
有没有一种简单的方法可以在不改变大部分代码的情况下做到这一点?
我在想这样的事情:
if(file-name="Folio001.xml")
return
<div class="carousel-item active"> {transform:transform($doc, $xsl, $params)} </div>
else
return
<div class="carousel-item"> {transform:transform($doc, $xsl, $params)} </div>
if(文件名=“Folio001.xml”)
返回
{transform:transform($doc,$xsl,$params)}
其他的
返回
{transform:transform($doc,$xsl,$params)}
提前感谢,,
K语法是
for $doc in collection(...)
return
if (document-uri($doc) = '...')
then
<div class="carousel-item active"> {transform:transform($doc, $xsl, $params)} </div>
else
<div class="carousel-item"> {transform:transform($doc, $xsl, $params)} </div>
因此,根据您所考虑的第一个文档以及如何返回/订购文档,这也是一个选项。p> 不要重复所有的
div
结构,只需在@class
属性构造函数中移动“active”值的条件:
<div> {
attribute {"class"} {"carousel-item", if (file-name="Folio001.xml") then "active" else () },
"transform:transform($doc, $xsl, $params)"
} </div>
{
属性{“class”}{“carousel item”,如果(file name=“Folio001.xml”),则为“active”else()},
转换:转换($doc、$xsl、$params)
}
非常感谢。。。我想可能已经发现了:-DIt不起作用。。。创建时,我得到以下错误:应用程序代码在第二个pb中!应用程序中的注释部分,我知道名称很糟糕,我稍后会更改它,顺便说一句,效果不错。有什么想法吗?
<div> {
attribute {"class"} {"carousel-item", if (file-name="Folio001.xml") then "active" else () },
"transform:transform($doc, $xsl, $params)"
} </div>