xml – 使用XSLT标记匹配正则表达式的文本?
我试图在
HTML文档上使用XSLT 2.0(Saxon-PE 9.6)来创建围绕指定的非拉丁语Unicode块(允许的空格)的所有连续字符行的标记.我需要将此过程应用于文档中的每个text()节点.我使用< xsl:analyze-string>的两种方法取得了一些进展.并使用fn:replace()但我无法达到令人满意和完整的解决方案.
例如,这里有一些包含印地语的文字: 输入:< p>???????在??????中的意思是“一杯茶”.< / p> 期望的输出:< p>< span xml:lang =“hi-Deva”>???????< / span>是指< span xml:lang =“hi-Deva”>??????< / span>中的“一杯茶”.< / p> 如何在XSLT 2.0中实现此过程? 这是我与< xsl:analyze-string>的尝试: (注意:印地语使用梵文代码块U 0900到U 097F.) <xsl:template match="text()"> <xsl:variable name="textValue" select="."/> <xsl:analyze-string select="$textValue" regex="(s*.*?)([ऀ-ॿ]+)((s+[ऀ-ॿ]+)*)(s*.*)"> <xsl:matching-substring> <xsl:value-of select="regex-group(1)"/> <span xml:lang="hi-Deva"><xsl:value-of select="regex-group(2)"/><xsl:value-of select="regex-group(3)"/></span> <xsl:value-of select="regex-group(5)"/> </xsl:matching-substring> <xsl:non-matching-substring> <xsl:value-of select="$textValue"/> </xsl:non-matching-substring> </xsl:analyze-string> </xsl:template> 在测试输入上,这会产生: 我的第二种方法使用了fn:replace(): <xsl:template match="text()"> <xsl:value-of select='fn:replace(.,"[ऀ-ॿ]+(s+[ऀ-ॿ]+)*","xxx$0xxx")'/> </xsl:template> 在测试输入上产生:< p> xxx???????xxx在xxx??????xxx中意味着’一杯茶’.< / p>这显然是不正确的,因为印地语用xxx包裹,而不是跨度标签,但从积极的一面来看,印地语的每个区域实际上都是被发现和处理的.我无法用span标签替换xxx代码,因为这是无效的XSLT. 解决方法
我想出了
http://xsltransform.net/jyH9rMo
<?xml version="1.0" encoding="UTF-8" ?> <xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0"> <xsl:output method="html" doctype-public="XSLT-compat" omit-xml-declaration="yes" encoding="UTF-8" indent="yes" /> <xsl:template match="/"> <hmtl> <head> <title>New Version!</title> </head> <xsl:apply-templates/> </hmtl> </xsl:template> <xsl:template match="@*|node()"> <xsl:copy> <xsl:apply-templates select="@*|node()"/> </xsl:copy> </xsl:template> <xsl:template match="text()"> <xsl:analyze-string select="." regex="([ऀ-ॿ]+)((s+[ऀ-ॿ]+)*)"> <xsl:matching-substring> <span xml:lang="hi-Deva"><xsl:value-of select="."/></span> </xsl:matching-substring> <xsl:non-matching-substring> <xsl:value-of select="."/> </xsl:non-matching-substring> </xsl:analyze-string> </xsl:template> </xsl:transform> (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- JSONModel解析数据成Model
- 正则表达式 – 帮助正则表达式
- tdd – 单元测试反应原生的触摸事件
- 事件源聚合根是否应该访问事件源库?
- Sothink SWF Decomplier v7.4.5320 Cracked By char_star
- EXTJS4.0 gridpanel 用法笔记~~可编辑的grid
- sqlite – 使用sqllite的Laravel迁移’无法添加一个NOT NUL
- Oracle:序列MySequence.currval在此会话中尚未定义
- C++ partition_point(STL partition_point)算法使用详解
- cocostudio骨骼动画 -- 原点