【发布时间】:2018-07-05 10:57:15
【问题描述】:
我有以下 XML:
<dev>
<niv1>
<int>blablabla</int>
<auteur>blablabla</auteur>
<exer>
<p align="justif">blablabla</p>
</exer>
</niv1>
<sign>M. A.</sign>
<p align="justif">
<pc>blablabla</pc>: blablabla2
</p>
<niv1>
<int>blablabla</int>
<auteur>blablabla</auteur>
<exer>
<p align="justif">blablabla</p>
</exer>
</niv1>
<sign>M. A.</sign>
<p align="justif">
<pc>blablabla</pc>: blablabla2
</p>
<!--Same pattern over and over again-->
</dev>
我想要类似的东西
<article>
<content>
<div>
<some tags>xxxx</some tags>
</div>
<span class="sign">xxx</span>
<p class="ref">
<p class="mini-caps">xxxx</p>:
</p>
</content>
</article>
我现在的 xml 输出如下所示:
<article>
<content>
<div>
<some tags>xxxx</some tags>
</div>
</content>
</article>
<span class="sign">xxx</span>
<p class="ref">
<p class="mini-caps">xxxx</p>:
</p>
我无法将最后一个 span 和 p 元素放在 content 标记中。
我的 XSLT 类似于(这里不是所有文件):
<xsl:template match="niv1">
<article>
<content>
<div>
<xsl:apply-templates mode="content"/>
</div>
<xsl:apply-templates select="sign"/>
</content>
</article>
</xsl:template>
<xsl:template match="sign">
<span class="sign">
<xsl:apply-templates/>
</span>
</xsl:template>
<xsl:template match="p">
<p class="ref">
<xsl:apply-templates/>
</p>
</xsl:template>
<xsl:template match="pc">
<p class="mini-caps">
<xsl:apply-templates/>
</p>
</xsl:template>
我不知道是否有可能实现我想要的,因为当我匹配<niv1>、<sign> 和<p> 不是niv1 的子节点时。我不经常使用 XSLT,而且我还是个初学者。
【问题讨论】: