Xml XSLT如何使用regexpr删除文本
我有一个XML技术,比如:Xml XSLT如何使用regexpr删除文本,xml,xslt,Xml,Xslt,我有一个XML技术,比如: <div class="col2"> <p>1. wine</p> <p>2. beer</p> <p>3. food</p> </div> 一,。酒 二,。啤酒 三,。食物 我想将其转化为: <div class="col2"> <ol> <li&g
<div class="col2">
<p>1. wine</p>
<p>2. beer</p>
<p>3. food</p>
</div>
一,。酒
二,。啤酒
三,。食物
我想将其转化为:
<div class="col2">
<ol>
<li>wine</li>
<li>beer</li>
<li>food</li>
</ol>
</div>
酒
啤酒
食物
我如何在xslt中做到这一点?
特别是:如何去掉数字(使用regexpr)?
我现在有:
<xsl:template match="div[@class='col2']">
<div>
<xsl:copy-of select="@*"/>
<ol>
<xsl:for-each select="p"> <===== what do I do here?
<li>
<xsl:apply-templates/>
</li>
</xsl:for-each>
</ol>
</div>
</xsl:template>
如果为此更换
:
<xsl:value-of select="normalize-space(substring-after(., '.'))"/>
<xsl:value-of select="replace(., '\d+\.\s+', '')"/>
您将删除“.”之前的所有内容,修剪多余的空格并获得所需的结果
对于您介绍的案例(不带空格、数字或句点的单词),您还可以通过以下方式获得相同的结果:
<xsl:value-of select="translate(., '01234567890. ', '')"/>
但如果你的数据不同,这将失败,因为它也会消除你文本中的任何空格(例如:“5.快餐”将变成“快餐”)。它还将消除字符串中任何位置的数字或句点
它们都在XSLT1.0或XSLT2.0中工作,但它们实际上并没有使用Regexp。XSLT1.0不支持Regexp
如果要使用regexp(需要XSLT 2.0)执行此操作,请为此替换
:
<xsl:value-of select="normalize-space(substring-after(., '.'))"/>
<xsl:value-of select="replace(., '\d+\.\s+', '')"/>
这意味着“找到一个或多个数字,后跟一个句点,后跟一个或多个空格,然后将其替换为零”。两个数字之间的确切数字是什么。那么wine呢?@michael.hor257k:正好是一个且只有一个空格,那么一个简单的
(即一个点和一个空格)就可以了。“找到一个数字”有比9大的数字…:-)哎呀。再次感谢@michael.hor257k!修好了。