如何在</Underline>标签后检查换行符(
)并需要替换为xslt代码中的<br/>标签
Posted
技术标签:
【中文标题】如何在</Underline>标签后检查换行符(
)并需要替换为xslt代码中的<br/>标签【英文标题】:How to check line feed(
) after</Underline>Tag and need to replace with to <br/> tag in xslt code 【发布时间】:2020-03-05 04:16:14 【问题描述】:我有 XML 文件需要使用 XSLT 代码转换成 html
请参考 XML 文件:
<?xml version="1.0" encoding="UTF-8"?><Lesson><Title>Merged Words_G1L5</Title><IntroBlock><ParaBlock><RichText>Materials: Exercise books and pencils</RichText></ParaBlock></IntroBlock><Topic><Title>Underlines – 15 minutes</Title><ParaBlock><CustomNote><SimpleBlock><RichText>
<Underline>ACHIEVE</Underline>
Fill in the Blank: go, wear, quiet, bus, I
1. the pupils are _____.
2. My parents are _____.
3. This school is a _____.
4. ____ am very tall.
5. They _____ sandals.</RichText></SimpleBlock></CustomNote></ParaBlock></Topic></Lesson>
通常换行(
)会从我现有的代码转换为<br/>
标签
现有代码:
1.检查换行并替换为<br/>
标签时:
<xsl:template match="text()">
<xsl:param name="text" select="."/>
<xsl:variable name="starttext" select="substring-before(concat($text,' '),' ')" />
<xsl:variable name="nexttext" select="substring-after($text,' ')"/>
<xsl:if test="normalize-space($starttext)">
<xsl:value-of select="$starttext"/>
<xsl:if test="normalize-space($nexttext)">
<br />
</xsl:if>
</xsl:if>
<xsl:if test="contains($text,' ')">
<xsl:apply-templates select=".">
<xsl:with-param name="text" select="$nexttext"/>
</xsl:apply-templates>
</xsl:if>
</xsl:template>
现有代码:2.与下划线相关:
<xsl:template match="Underline">
<xsl:if test="text() or *">
<u>
<xsl:apply-templates/>
</u>
</xsl:if>
</xsl:template>
现有代码:3. 与富文本相关:
<xsl:template match="RichText">
<xsl:if test="text() or *">
<p>
<xsl:apply-templates/>
</p>
</xsl:if>
</xsl:template>
上面提到的是我现有的代码。
我需要一个解决方案来解决如何在</Underline>
标记和<RichText>
下的</UnderLine>
标记之后检查换行符(
),因为正常情况下我的代码工作正常,但仅导致当</UnderLine>
标签位于<RichText>
之下时
任何人,请建议我如何在我的代码中的 </UnderLine>
标记之后检查换行符(
)
?????.
当前问题: Current Issue
所需输出: Required Output
【问题讨论】:
【参考方案1】:您在以下条件下输出<br />
:
<xsl:if test="normalize-space($starttext)">
当文本以换行符开头时,此条件不成立 - 就像在您的示例中那样。如果要保留开头的换行符,请删除条件。
【讨论】:
感谢您的建议,如果我删除此条件,那么如何处理这种情况 - “当文本以换行符开头时”我如何检查“ 标签的任何具体解决方案都属于Underline
之后的换行符已经存在。你是删除它的人。
感谢 Michael 的建议,知道如何在 if 条件下检查
并将
替换为“”。因为我需要专门检查这个东西请建议?还有代码序列?我对 XSLT 代码很陌生,请帮帮我...
我们好像在绕圈子。
因为我需要在同一个代码中检查这两个条件,一些文件需要这个代码,而其他一些文件有
条件,但是第一个条件覆盖到第二个条件。我如何在同一代码中管理两者。以上是关于如何在</Underline>标签后检查换行符(
)并需要替换为xslt代码中的<br/>标签的主要内容,如果未能解决你的问题,请参考以下文章