1
我想要在這裏,我希望把所有的值與標籤<beschreibung>...</beschreibung>
用相同的ID從我所面對的標籤<rissko>...</risiko>
無法擺脫multible元素的所有值XSLT
問題這裏,我不得不用XSLT-1.0輸出格式必須正確確定的一個變量,現在就可以拿到第一值形成每個元件都具有相同的<risiko/>
輸入-XML:
<damages>
<Element name="0">
<risiko>/db/so/si/GebaeudeSchadenWasser.xml</risiko>
<schaden>200</schaden>
<beschreibung>wasser</beschreibung>
</Element>
<Element name="1">
<risiko>/db/so/si/GebaeudeSchadenFeuer.xml</risiko>
<schaden>200</schaden>
<beschreibung>feuer 1</beschreibung>
</Element>
<Element name="2">
<risiko>/db/so/si/GebaeudeSchadenElementar.xml</risiko>
<schaden>200</schaden>
<beschreibung>elementar 2</beschreibung>
</Element>
<Element name="3">
<risiko>/db/so/si/GebaeudeSchadenElementar.xml</risiko>
<schaden>200</schaden>
<beschreibung>elementar 3</beschreibung>
</Element>
<Element name="4">
<risiko>/db/so/si/GebaeudeSchadenElementar.xml</risiko>
<schaden>200</schaden>
<beschreibung>elementar 1</beschreibung>
</Element>
<Element name="5">
<risiko>/db/so/si/GebaeudeSchadenGlas.xml</risiko>
<schaden>200</schaden>
<beschreibung>glas</beschreibung>
</Element>
<Element name="6">
<risiko>/db/so/si/GebaeudeSchadenFeuer.xml</risiko>
<schaden>200</schaden>
<beschreibung>feuer 2</beschreibung>
</Element>
<Element name="7">
<risiko>/db/so/si/GebaeudeSchadenSturm.xml</risiko>
<schaden>300</schaden>
<beschreibung>sturm</beschreibung>
</Element>
</damages>
XSL變量:
<xsl:variable name="damage">
<damage>
<xsl:if test="$iVorschadenFeuer">
<R>
<riskid>
<xsl:value-of select="'/db/so/si/GebaeudeSchadenFeuer.xml'" />
</riskid>
<id>
<xsl:value-of select="'1'" />
</id>
<gefahrbasis>
<xsl:value-of select="'F'" />
</gefahrbasis>
</R>
</xsl:if>
<xsl:if test="$iVorschadenWasser">
...
</xsl:if>
<xsl:if test="$iVorschadenSturm">
...
</xsl:if>
</damage>
模板與輸出結構:
<xsl:template match="R">
<xsl:variable name="aktrisk" select="riskid" />
<xsl:variable name="aktid" select="id" />
<sach:Vorschaden>
<vs-pm:AnzahlVorschaeden>
<xsl:value-of select="count($iDamages[risiko = $aktrisk])" />
</vs-pm:AnzahlVorschaeden>
<vs-pm:Beschreibung>
<xsl:choose>
<xsl:when test="$iDamages[risiko = $aktrisk]/beschreibung != ''">
<xsl:for-each select="$iDamages[risiko = $aktrisk]">
<xsl:value-of select="$iDamages[risiko = $aktrisk]/beschreibung" />
<xsl:value-of select="'/ '" />
</xsl:for-each>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="'Keine Angaben'" />
</xsl:otherwise>
</xsl:choose>
</vs-pm:Beschreibung>
<vs-pm:DeckungID xsi:type="dt:STE_DeckungBasis">
<xsl:value-of select="$aktid" />
</vs-pm:DeckungID>
<xsl:if test="gefahrbasis">
<vs-pm:Gefahr xsi:type="dt:STE_GefahrBasis">
<xsl:value-of select="gefahrbasis" />
</vs-pm:Gefahr>
</xsl:if>
<vs-pm:Schadenhoehe>
<allg:Betrag>
<xsl:value-of select="sum($iDamages[risiko = $aktrisk]/schaden)" />
</allg:Betrag>
<allg:Waehrung>
<xsl:value-of select="'EUR'" />
</allg:Waehrung>
</vs-pm:Schadenhoehe>
</sach:Vorschaden>
這裏的問題是$iDamages[risiko = $aktrisk]/beschreibung
我只是得到elementar 2
3次,但我想有像elementar 2/ elementar 3/ elementar 1
(中順序無關緊要)
Ans WER:
<sach:Vorschaden>
<vs-pm:AnzahlVorschaeden>3</vs-pm:AnzahlVorschaeden>
<vs-pm:Beschreibung>elementar 1/ elementar 2/ elementar 3</vs-pm:Beschreibung>
<vs-pm:DeckungID xsi:type="dt:STE_DeckungBasis">1</vs-pm:DeckungID>
<vs-pm:Gefahr xsi:type="dt:STE_GefahrBasis">F</vs-pm:Gefahr>
<vs-pm:Schadenhoehe>
<allg:Betrag>300</allg:Betrag>
<allg:Waehrung>EUR</allg:Waehrung>
</vs-pm:Schadenhoehe>
</sach:Vorschaden>
我寧願不使用Muenchian分組的
我不明白你的問題。請顯示您的示例的預期結果,並通過「*標記 ... beschreibung>中的所有值使用來自標記 ... *」的相同ID解釋您的確切含義。如果我不得不猜測,我會說這是一個*分組問題。已經發布了許多例子 - 搜索* Muenchian分組*。 –