我可以使用 XSLT 来转换以下 XML:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Root>
<p>The chemical formula for water is H<sub>2</sub>O. The rest of this paragraph is not relevant.</p>
<p>Another paragraph without subscripts.</p>
</Root>
对此:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Root>
<p><text>The chemical formula for water is H</text><sub>2</sub><text>O. The rest of this paragraph is not relevant.</text></p>
<p>Another paragraph without subscripts.</p>
</Root>
即将包含子元素的ap 元素的不同部分包装成文本元素?
到目前为止,这是我的 XSLT:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="1.0">
<xsl:template match="Root|p">
<xsl:copy>
<xsl:copy-of select="@*"/>
<xsl:apply-templates/>
</xsl:copy>
</xsl:template>
<xsl:template match="p[child::*[name()='sub']]">
<xsl:copy>
<xsl:element name="text">
<xsl:copy-of select="@*"/>
<xsl:apply-templates/>
</xsl:element>
</xsl:copy>
</xsl:template>
<xsl:template match="sub">
<xsl:copy>
<xsl:apply-templates/>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
但这会将整个段落包装成一个<text>
元素,并且不会在2处划分它。我怎样才能让它做我想做的事?
一点背景信息,如果您有兴趣:我想将 XML 导入 Adobe InDesign,但是如果我只将字符样式sub应用于子元素,则段落的后半部分(从 O 开始)仍然会在下标。我必须包装其他位以<text>
使格式正确。