我想在以下XML上强加一些结构:
<phr>ΦP
<i>το αθάνατο</i> ~.
<i>ήπιε το αμίλητο</i> ~.
<i>πίνω</i> ~ <i>στο όνομα κάποιου</i>, τον σέβομαι, τον εκτιμώ, αναγνωρίζοντας τα όσα του οφείλω.
<i>λέω το</i> ~ <i>νεράκι</i>, για μεγάλη έλλειψη νερού.
</phr>
通过将句号的内容分组为分隔符,如:
<phr>
<group>ΦP <i>το αθάνατο</i> ~.</group>
<group> <i>ήπιε το αμίλητο</i> ~.</group>
<group> <i>πίνω</i> ~ <i>στο όνομα κάποιου</i>, τον σέβομαι, τον εκτιμώ, αναγνωρίζοντας τα όσα <group>του οφείλω.</group>
<group><i>λέω το</i> ~ <i>νεράκι</i>, για μεγάλη έλλειψη νερού.</group>
</phr>
有人可以推荐一些XSLT(2.0)来实现这个目标吗?我已经尝试了每个组 - 由'text()[匹配(。,'。')]',但这不会产生预期的结果。
非常感谢!
答案 0 :(得分:0)
此样式表应该满足您的需求:
<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">
<!-- Identity template -->
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="phr">
<xsl:copy>
<xsl:for-each-group select="node()" group-ending-with="text()[contains(.,'.')]">
<group>
<xsl:apply-templates select="current-group()"/>
</group>
</xsl:for-each-group>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>