我有这个文字
DìsManibus。 / Iuliae Fortu = / natae /vìx(it)ann(是) XIV,m(ensibus)XI,/ et matri eius。 <:in latere intuentibus sinistro> Ti(berius)Iulius Arsaces /fìliae pìissimae<:in latere intuentibus dextro> fecit et sibi et / Pontiae Euhodiae / coniugi suae et /lìbertis lìbertabus/posterìsqueeorum。
我想用xslt 2.0对它进行标记,以便由<:in latere intuentibus dextro>引入的每个部分都在一个单独的div中。
我试图将它放在一个变量中然后用它来标记,但没有成功。
<xsl:variable name="parts">
<xsl:analyze-string select="." regex="(〈)(:.*?)(〉)">
<xsl:matching-substring>
<xsl:sequence select="."/>
</xsl:matching-substring>
</xsl:analyze-string>
</xsl:variable>
<xsl:template name="edition">
<xsl:choose>
<xsl:when test="contains(., $parts)">
<xsl:for-each select="tokenize(., $parts)">
<div><xsl:attribute name="n" select="position()"/>
<xsl:attribute name="type">textpart</xsl:attribute>
...
</div>
</xsl:for-each></xsl:when></xsl:choose>
</xsl:template>
实际上:如果我的分离文本只有一个实例可以工作,但上面的例子没有两倍的分隔符,应该给我三个令牌。
<div n="1" type="textpart">
Dìs Manibus.Iuliae Fortunatae vìxit annis XIV, mensibus XI,et matri eius.
</div>
<div n="2" type="textpart">
Tiberius Iulius Arsaces fìliae pìissimae fecit et sibi et Pontiae Euhodiae coniugi suae et lìbertis lìbertabus posterìsque eorum.
</div>
我想要的结果是
<div n="1" type="textpart">
Dìs Manibus.Iuliae Fortunatae vìxit annis XIV, mensibus XI,et matri eius.
</div>
<div n="2" type="textpart">
Tiberius Iulius Arsaces fìliae pìissimae
</div>
<div n="3" type="textpart">
fecit et sibi et Pontiae Euhodiae coniugi suae et lìbertis lìbertabus posterìsque eorum.
</div>
非常感谢你的帮助。
答案 0 :(得分:1)
为什么不简单地使用
<xsl:for-each select="tokenize($yourTextInput, '〈:in latere intuentibus dextro〉')">
<div n="{position()}" type="textpart">
<xsl:value-of select="."/>
</div>
</xsl:for-each>
答案 1 :(得分:0)
可能是点.
排除了换行符
要解决这样的问题,可能会 -
编辑取消了英镑符号上的转义,因为实体将被字符替换(我认为)。
(?s)(〈)(:.*?)(〉)
// or
(〈)(:[\S\s]*?)(〉)