这是我将目录中的每个文件制作为轮播( 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", ""))
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>
};
有没有一种简单的方法可以在不更改大部分代码的情况下做到这一点? 我在想某事。像这样:
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>
提前致谢, K
最佳答案
无需重复所有 div
结构,只需将“active”值的条件移动到 @class
属性构造函数内即可:
<div> {
attribute {"class"} {"carousel-item", if (file-name="Folio001.xml") then "active" else () },
"transform:transform($doc, $xsl, $params)"
} </div>
关于xquery:如何以相同的方式转换多个文件,但对一个文件进行特殊处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60209735/