使用 XSLT 更改单个元素的样式
Change style of one single element using XSLT
我对使用 XSLT 完全陌生,但在我的工作中,他们要求我做一些 XSL 转换。如果我的问题太基础请见谅
我使用手写诗歌,我希望将每一节经文(l 元素,在 lg 内)视为一行。经文可以包含几个元素,例如缩写 (abbr)、删除 (del)、添加 (add) 和其他元素。我需要这些元素在每节经文中以不同的颜色显示。
这是我到目前为止能够编写的代码的一部分。
<xsl:template match = "TEI/text/body/lg">
<p><xsl:apply-templates select = "l" /></p>
</xsl:template>
<xsl:template match="l" priority="0">
<span style="color:black;">
<xsl:value-of select="." />
</span><br/>
</xsl:template>
希望能帮到你。
请尝试以下解决方案:
给定此输入,似乎以 TEI(Text Encoding Initiative)格式编码:
<TEI xmlns="http://www.tei-c.org/ns/1.0">
<teiHeader>
<fileDesc>
<titleStmt>
<title>Title</title>
</titleStmt>
<publicationStmt>
<p>Information about publication or distribution</p>
</publicationStmt>
<sourceDesc>
<p>Information about the source</p>
</sourceDesc>
</fileDesc>
</teiHeader>
<text>
<body>
<lg>
<l>Roses are <abbr>red</abbr></l>
<l>Violets are <del>blue</del></l>
<l>Line <add>three</add></l>
</lg>
<lg>
<l>Roses are red</l>
<l>Line two</l>
<l>Line three</l>
</lg>
</body>
</text>
</TEI>
以下样式表:
<?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"
xmlns:tei="http://www.tei-c.org/ns/1.0"
exclude-result-prefixes="xs tei"
version="1.0">
<xsl:output method="html" encoding="UTF-8" indent="yes"/>
<xsl:template match="/">
<div class="wrapper">
<xsl:apply-templates select="tei:TEI/tei:text/tei:body"/>
</div>
</xsl:template>
<!--Block elements-->
<xsl:template match="tei:lg">
<div class="verse" style="padding: 2rem;">
<xsl:apply-templates/>
</div>
</xsl:template>
<xsl:template match="tei:l">
<div class="verse-line">
<xsl:apply-templates/>
</div>
</xsl:template>
<!--Inline elements-->
<xsl:template match="tei:abbr">
<span class="abbr" style="color: red;">
<xsl:apply-templates/>
</span>
</xsl:template>
<xsl:template match="tei:del">
<span class="del" style="color: blue;">
<xsl:apply-templates/>
</span>
</xsl:template>
<xsl:template match="tei:add">
<span class="add" style="color: cyan;">
<xsl:apply-templates/>
</span>
</xsl:template>
</xsl:stylesheet>
将输出此 HTML:
<div class="wrapper">
<div class="verse" style="padding: 2rem;">
<div class="verse-line">Roses are <span class="abbr" style="color: red;">red</span></div>
<div class="verse-line">Violets are <span class="del" style="color: blue;">blue</span></div>
<div class="verse-line">Line <span class="add" style="color: cyan;">three</span></div>
</div>
<div class="verse" style="padding: 2rem;">
<div class="verse-line">Roses are red</div>
<div class="verse-line">Line two</div>
<div class="verse-line">Line three</div>
</div>
</div>
它将与以下任何 XSLT 处理器一起工作:
- Saxon6.5.5
- 撒克逊-HE 9.9.1.7
- 撒克逊-PE 9.9.1.7
- 撒克逊-EE 9.9.1.7
我对使用 XSLT 完全陌生,但在我的工作中,他们要求我做一些 XSL 转换。如果我的问题太基础请见谅
我使用手写诗歌,我希望将每一节经文(l 元素,在 lg 内)视为一行。经文可以包含几个元素,例如缩写 (abbr)、删除 (del)、添加 (add) 和其他元素。我需要这些元素在每节经文中以不同的颜色显示。
这是我到目前为止能够编写的代码的一部分。
<xsl:template match = "TEI/text/body/lg">
<p><xsl:apply-templates select = "l" /></p>
</xsl:template>
<xsl:template match="l" priority="0">
<span style="color:black;">
<xsl:value-of select="." />
</span><br/>
</xsl:template>
希望能帮到你。
请尝试以下解决方案:
给定此输入,似乎以 TEI(Text Encoding Initiative)格式编码:
<TEI xmlns="http://www.tei-c.org/ns/1.0">
<teiHeader>
<fileDesc>
<titleStmt>
<title>Title</title>
</titleStmt>
<publicationStmt>
<p>Information about publication or distribution</p>
</publicationStmt>
<sourceDesc>
<p>Information about the source</p>
</sourceDesc>
</fileDesc>
</teiHeader>
<text>
<body>
<lg>
<l>Roses are <abbr>red</abbr></l>
<l>Violets are <del>blue</del></l>
<l>Line <add>three</add></l>
</lg>
<lg>
<l>Roses are red</l>
<l>Line two</l>
<l>Line three</l>
</lg>
</body>
</text>
</TEI>
以下样式表:
<?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"
xmlns:tei="http://www.tei-c.org/ns/1.0"
exclude-result-prefixes="xs tei"
version="1.0">
<xsl:output method="html" encoding="UTF-8" indent="yes"/>
<xsl:template match="/">
<div class="wrapper">
<xsl:apply-templates select="tei:TEI/tei:text/tei:body"/>
</div>
</xsl:template>
<!--Block elements-->
<xsl:template match="tei:lg">
<div class="verse" style="padding: 2rem;">
<xsl:apply-templates/>
</div>
</xsl:template>
<xsl:template match="tei:l">
<div class="verse-line">
<xsl:apply-templates/>
</div>
</xsl:template>
<!--Inline elements-->
<xsl:template match="tei:abbr">
<span class="abbr" style="color: red;">
<xsl:apply-templates/>
</span>
</xsl:template>
<xsl:template match="tei:del">
<span class="del" style="color: blue;">
<xsl:apply-templates/>
</span>
</xsl:template>
<xsl:template match="tei:add">
<span class="add" style="color: cyan;">
<xsl:apply-templates/>
</span>
</xsl:template>
</xsl:stylesheet>
将输出此 HTML:
<div class="wrapper">
<div class="verse" style="padding: 2rem;">
<div class="verse-line">Roses are <span class="abbr" style="color: red;">red</span></div>
<div class="verse-line">Violets are <span class="del" style="color: blue;">blue</span></div>
<div class="verse-line">Line <span class="add" style="color: cyan;">three</span></div>
</div>
<div class="verse" style="padding: 2rem;">
<div class="verse-line">Roses are red</div>
<div class="verse-line">Line two</div>
<div class="verse-line">Line three</div>
</div>
</div>
它将与以下任何 XSLT 处理器一起工作:
- Saxon6.5.5
- 撒克逊-HE 9.9.1.7
- 撒克逊-PE 9.9.1.7
- 撒克逊-EE 9.9.1.7