如何处理p标签中的下划线。这是我正在工作的代码。有人能帮我克服这个问题吗?
输入XML和XSLT代码:https://xsltfiddle.liberty-development.net/a9HjZX/1
输入XML:
<?xml version="1.0" encoding="UTF-8"?>
<root>
<p>Number of Shares: _______</p>
<p>__________ Name of Company.</p>
<p>Number of Shares: _______Type of Stock: ________________</p>
<p>Certificate No: __________Company.</p>
</root>
预期输出:
<?xml version="1.0" encoding="UTF-8"?><root>
<p>Number of Shares: <inline-supplementary-material content-type="7_sld">_______</inline-supplementary-material></p>
<p><inline-supplementary-material content-type="10_sld">__________</inline-supplementary-material> Name of Company.</p>
<p>Number of Shares: <inline-supplementary-material content-type="7_sld">_______</inline-supplementary-material>Type of Stock: <inline-supplementary-material content-type="16_sld">________________</inline-supplementary-material></p>
<p>Certificate No: <inline-supplementary-material content-type="10_sld">__________</inline-supplementary-material> Company.</p>
</root>
XSLT代码:
<?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:template match="root">
<root>
<xsl:apply-templates/>
</root>
</xsl:template>
<xsl:template name="GetNoOfOccurance">
<xsl:param name="String"/>
<xsl:param name="SubString"/>
<xsl:param name="Counter" select="0" />
<xsl:variable name="sa" select="substring-after($String, $SubString)" />
<xsl:choose>
<xsl:when test="$sa != '' or contains($String, $SubString)">
<xsl:call-template name="GetNoOfOccurance">
<xsl:with-param name="String" select="$sa" />
<xsl:with-param name="SubString" select="$SubString" />
<xsl:with-param name="Counter" select="$Counter + 1" />
</xsl:call-template>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="$Counter" />
</xsl:otherwise>
</xsl:choose>
</xsl:template>
<xsl:template match="p[parent::*]">
<xsl:element name="{local-name(.)}">
<xsl:apply-templates select="@*"/>
<xsl:variable name="num">
<xsl:call-template name="GetNoOfOccurance">
<xsl:with-param name="String" select="."/>
<xsl:with-param name="SubString" select="'_'"/>
</xsl:call-template>
</xsl:variable>
.............
</xsl:element>
</xsl:template>
我会使用analyst-string
(在XSLT 3中)或xsl: analyst-string
(在XSLT 2中),这是XSLT 3示例:
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
exclude-result-prefixes="xs"
expand-text="yes"
version="3.0">
<xsl:mode on-no-match="shallow-copy"/>
<xsl:template match="p[matches(., '_+')]">
<xsl:copy>
<xsl:apply-templates select="@*"/>
<xsl:apply-templates select="analyze-string(., '_+')" mode="match"/>
</xsl:copy>
</xsl:template>
<xsl:template match="*:match" mode="match">
<inline-supplemental-material content-type="{string-length()}_sld">{.}</inline-supplemental-material>
</xsl:template>
</xsl:stylesheet>
https://xsltfiddle.liberty-development.net/a9HjZX/2
如果您希望p
具有子元素,您可能需要在文本节点上匹配:
<xsl:template match="p[matches(., '_+')]//text()">
<xsl:apply-templates select="analyze-string(., '_+')" mode="match"/>
</xsl:template>
<xsl:template match="*:match" mode="match">
<inline-supplemental-material content-type="{string-length()}_sld">{.}</inline-supplemental-material>
</xsl:template>
https://xsltfiddle.liberty-development.net/a9HjZX/3
问题内容: 除了#myspan元素外,我试图在链接上加下划线,在任何情况下我都不希望下划线。我还想更改#myspan的颜色。该规则似乎不适用于它。如果我颠倒顺序,但未在“ a”下划线但在#myspan下划线,则似乎适用该规则。我已经看到链接的文本装饰和跨此链接无效。 问题答案: 将元素设置为不会受到下划线的影响: 请注意,文本修饰不会传播到浮动和绝对定位的后代,也不会传播到原子内联级别后代(例如内
我试过,但不行。下面是我的代码: null null 它在这里起作用,但对我的VS代码不起作用。这是窃听器吗?
问题内容: 在查看各种PHP库时,我注意到许多人选择在某些类方法的前面加一个下划线,例如 …代替… 我意识到这最终归结于个人喜好,但我想知道是否有人对这种习惯的来历有所了解。 我的想法是,它可能是从PHP 4继承过来的,然后才可以将类方法标记为protected或private,以暗示“不要从类外部调用此方法”。但是,我也想到,它可能起源于我不熟悉的某个地方(一种语言),或者背后有很好的理由让我从
HTML会忽略在文本编辑器中输入的回车符合其他额外的空格,要在网页中开始一个新的段落,应该使用p元素(p 是 paragraph 的缩写)。 p元素是一个有特定语义的元素,以 <p> 标签开始,以 </p> 标签结束。但是,当 p元素后紧跟 address、article, aside、blockquote、div、dl、fieldset、footer、form、h1~h6、header、hgro
问题内容: 为什么我们永远不能将元素作为元素的子元素? 我用以下代码制作了一个网页 在这里,元素是p元素的子元素。但是,在所有主流浏览器(Chrome,Firefox和Internet Explorer-所有最新版本)中,其解释如下 我通过右键单击元素(在Chrome中)并选择检查元素选项来对其进行检查。我在Chrome中看到了它,但是其他两个浏览器的行为也相同(CSS选择器“ p ul”无法正常
我有个关于Recrusion的问题。recrusion背后的概念对我来说是清楚的,但是如果我想同时处理两个元素呢。有没有一个简单的方法来处理。 例如: 上面的线对我来说很清楚,但是如果我想要两个过程同时处理两个元素,就像这样: 相互独立地添加每个值。