我要选择@reId
,其后跟数字(fig-FigF.3A
)。
输入:
<p type="TOC_Level Two Entry">
<doclink refType="anchor" refId="fig-FigF.3A">Figure F.3A—Text<c
type="TOC_Leader Dots"><t/></tps:c></tps:doclink>
<ref format="TOC Page Number" refType="anchor" refId="fig-FigF.3A"/>
<p>
输出应为:
<p type="TOC_Level Two Entry"><doclink refType="anchor"
refId="fig-FigF.3A">F.3A<tps:t/>Text<c
type="TOC_Leader Dots"><t/></c></tps:doclink><ref
format="TOC Page Number" refType="anchor" refId="fig-FigF.3A"/></tps:p>
尝试的代码:
我尝试使用此正则表达式^(Figure )(\d+|[A-Z].\d+)(—)(.*)
解决此问题。但这不起作用。
我该如何解决?我正在使用xslt 2.0
答案 0 :(得分:1)
因此,尝试从中提取明确的需求陈述,看来您希望输入“ fig-FigF.3A”产生输出“ F.3A”。或者,也许您想将“图F.3A-文本”视为输入?一方面,您说您正在选择@reId
属性-该属性在您的输入中不存在;另一方面,您尝试的解决方案是寻找出现在文本节点中而不是属性中的文本“ Figure”。
所以我认为我们需要更清晰的要求声明。
将其作为需求陈述的另一个问题是您仅给出一个示例,而不是一般规则。您的问题中有一条一般规则的提示“该字符后面有一个数字”。但是,这是什么意思?您的示例似乎正在寻找字母点数字模式,这根本与您对问题的描述不符。
对不起,SO主持人,这不是答案,而是对问题的评论。它开始只是一个答案,直到我意识到这个问题还不清楚,但是那时评论太久了。
答案 1 :(得分:1)
Ist格式不正确的输入plz检查
如果只想更改文本,则将此代码与替换功能一起使用:
输入:
<?xml version="1.0" encoding="UTF-8"?>
<p type="TOC_Level Two Entry">
<tps:doclink refType="anchor" refId="fig-FigF.3A" xmlns:tps="htttp:\\tps">Figure F.3A—Text<tps:c type="TOC_Leader Dots"><t/></tps:c></tps:doclink>
<ref format="TOC Page Number" refType="anchor" refId="fig-FigF.3A"/>
</p>
代码:
<?xml version="1.0" encoding="UTF-8"?>
<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">
<xsl:output method="xml" omit-xml-declaration="no"/>
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="text()">
<xsl:value-of select="replace(., '(Figure )([A-Z])([.])([0-9A-Z]+)(.+?)([A-Za-z]+)', '$2$3$4')"/>
</xsl:template>
</xsl:stylesheet>
输出:
<?xml version="1.0" encoding="UTF-8"?>
<p type="TOC_Level Two Entry">
<tps:doclink xmlns:tps="htttp:\\tps" refType="anchor" refId="fig-FigF.3A">F.3B<tps:c type="TOC_Leader Dots"><t/></tps:c></tps:doclink>
<ref format="TOC Page Number" refType="anchor" refId="fig-FigF.3A"/>
</p>