我在將現有的 xslt1.0 樣式表轉換為 2.0 時遇到了問題。
我使用 Saxon 作為處理器。
問題出在這個指令上:
<xsl:for-each-group select="$currentArt/MAPs/typeMAP[ERs/er/code= $ERval]" group-by="refCde">
其中使用另一個 for-each-group 中的 current-grouping-key 函式設定變數“ERval”。
ERval 設定為 xs:untypedAtomic,并且出現錯誤“ '/' 的第一個運算元的必需項型別是 node(),提供的值具有項型別 xs:untypeAtomic。 ”
我嘗試了不同的東西,但我錯過了一些東西。
有人可以解釋一下,如何實作這一點,并指出解釋它的檔案部分嗎?
感謝您的幫助。
XML 輸入
<?xml version="1.0" encoding="ISO-8859-1"?>
<art>
<MAPs>
<typeMAP>
<libArt>ANJOU TOLERIE</libArt>
<ERs>
<er>
<code>18</code>
</er>
<er>
<code>21</code>
</er>
</ERs>
<refCde>1234</refCde>
</typeMAP>
<typeMAP>
<libArt>ARTICLE HOTELIER</libArt>
</typeMAP>
<typeMAP>
<libArt>BOOK</libArt>
<ERs>
<er>
<code>18</code>
</er>
</ERs>
<refCde>5678</refCde>
</typeMAP>
<typeMAP>
<libArt>ARTICLE HOTELIER</libArt>
</typeMAP>
</MAPs>
</art>
樣式表
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
exclude-result-prefixes="xs"
version="2.0">
<xsl:output method="text" encoding="ISO-8859-1"/>
<xsl:template match="/">
<xsl:apply-templates select="//art"/>
</xsl:template>
<xsl:template match="art">
<xsl:if test="./MAPs/typeMAP/ERs/er/code">
<xsl:for-each-group select="./MAPs/typeMAP" group-by="ERs/er/code">
<!-- call template passing ERval-->
<xsl:call-template name="template">
<xsl:with-param name="currentArt" select="."/>
<xsl:with-param name="ERval" select="current-grouping-key()"/>
</xsl:call-template>
</xsl:for-each-group>
</xsl:if>
</xsl:template>
<xsl:template name="template">
<xsl:param name="currentArt" select="''"/>
<xsl:param name="ERval" select="()"/>
<xsl:for-each-group select="$currentArt/MAPs/typeMAP[ERs/er/code = $ERval]" group-by="refCde">
<xsl:value-of select="current-grouping-key()"/>
<xsl:text>
</xsl:text>
</xsl:for-each-group>
</xsl:template>
</xsl:stylesheet>
uj5u.com熱心網友回復:
我認為你想要<xsl:for-each-group select="current-group()" group-by="refCde">而不是<xsl:for-each-group select="$currentArt/MAPs/typeMAP[ERs/er/code = $ERval]" group-by="refCde">.
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/363067.html
上一篇:短語法等效
下一篇:使用saxon決議xsl檔案后,如何將XSL檔案中的值設為字串以及如何洗掉<dot-filename>graphs/node</dot-filename>標記?
