我有一個包含課程 A 和 B 參與者的 xml 檔案。所有參與者都分組。第 03 組學習了 A 級課程。
<contacts>
<contact>
<informalname>Jan</informalname>
<formalname>met de Pet</formalname>
<cursus level="LevelA" group="03">
<coursetown>Amsterdam</coursetown>
<coursedate>4 and 11 March 2021</coursedate>
<coursename>Fantastic Course A</coursename>
</cursus>
<cursus level="LevelB" group="05">
<coursetown>Rotterdam</coursetown>
<coursedate>15 and 22 november 2021</coursedate>
<coursename>Fantastic Course Level B</coursename>
</cursus>
</contact>
<contact>
<informalname>Maria</informalname>
<formalname>Zusenzo</formalname>
<cursus level="LevelA" group="01">
<coursetown>Amsterdam</coursetown>
<coursedate>2 and 16 november 2020</coursedate>
<coursename>Fantastic Course A</coursename>
</cursus>
<cursus level="LevelB" group="05">
<coursetown>Rotterdam</coursetown>
<coursedate>15 and 22 november 2021</coursedate>
<coursename>Fantastic Course Level B</coursename>
</cursus>
</contact>
</contacts>
我可以將 xml 檔案拆分為子檔案,從而可以生成出勤串列和證書。但結果仍然包含參與者所在的其他組的資訊。
我的目的是將 xml 檔案拆分為單獨的組號檔案,其中包含有關參與者的資訊,并且僅包含與該特定組的課程/課程有關的資料。
在組“05”的情況下,所需的輸出如下:
<contacts>
<contact>
<informalname>Jan</informalname>
<formalname>met de Pet</formalname>
<cursus level="LevelB" group="05">
<coursetown>Rotterdam</coursetown>
<coursedate>15 and 22 november 2021</coursedate>
<coursename>Fantastic Course Level B</coursename>
</cursus>
</contact>
<contact>
<informalname>Maria</informalname>
<formalname>Zusenzo</formalname>
<cursus level="LevelB" group="05">
<coursetown>Rotterdam</coursetown>
<coursedate>15 and 22 november 2021</coursedate>
<coursename>Fantastic Course Level B</coursename>
</cursus>
</contact>
</contacts>
我現在使用以下 xslt 檔案:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" indent="yes" omit-xml-declaration="yes"/>
<xsl:template match="contacts">
<xsl:for-each-group select="contact" group-by="cursus/@group">
<xsl:result-document href="groep-{current-grouping-key()}.xml">
<contacts>
<xsl:apply-templates select="current-group()"/>
</contacts>
</xsl:result-document>
</xsl:for-each-group>
</xsl:template>
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
我嘗試添加第二個模板,其中包含諸如 <xsl:if test="@group = current-grouping-key()"/> 之類的陳述句,但它們沒有給出任何結果。我希望你能幫助我。先感謝您。
uj5u.com熱心網友回復:
添加
<xsl:template match="contact/cursus">
<xsl:if test="@group = current-grouping-key()">
<xsl:next-match/>
</xsl:if>
</xsl:template>
只復制匹配的cursus元素。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/341384.html
上一篇:如何在XSLT表中顯示正確的內容
下一篇:正則運算式將所有標簽替換為一個
