-1

我在下面提到了我的 xml 文件,xml 包含许多内部样式标签(请使用通用 xslt 代码提取所有文本),但它应该提取内部标签之后的所有文本和开始内部标签之前的文本。

<?xml version="1.0" encoding="UTF-8"?>
<Values>
    <Value AttributeID="11218">
        <Text>WGP03068-CNZH-00
                <style name="bold">Introduction of the Title</style>xslt
                <style name="TextStyle1">
                    The smallest font size for which kerning should be automatically adjusted.
                </style>
                <style name="bold">Reference for this book
                  <style name="TextStyle1">
                    The smallest font size for which kerning should be automatically adjusted.
                </style>
                Hope you had a good learning experience.
                </style>
                I am expecting more solution for my doughts.
            </Text>
        </Value>
    </Values>

下面提到了我的 XSLT 代码:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:template match="/">
        <HTML>
            <xsl:apply-templates />
        </HTML>
    </xsl:template>

    <xsl:template match="Values">
        <xsl:for-each select="Value">
            <xsl:for-each select="Text">
                <p>
                <xsl:for-each select="style">
                    <xsl:value-of select="." />
                </xsl:for-each>
                </p>
            </xsl:for-each>
        </xsl:for-each>
    </xsl:template>
</xsl:stylesheet>

我的 XSLT 缺少元素的开始文本和结束文本它只读取元素,我想阅读所有外部和内部标记文本并添加我自己的样式(如粗体、斜体、字体名称和颜色)

我期待如下输出:

WGP03068-CNZH-00 标题介绍xslt 应自动调整字距的最小字体大小。 本书参考 自动调整字距的最小字体大小。希望您有一个良好的学习体验。我期待为我的甜甜圈提供更多解决方案。

4

1 回答 1

0

更好的方法是使用“推送”方法,并将 XSLT 样式表编码为一系列匹配的模板,在其中输出所需的 html。

例如,要将 XML 中的Text元素转换为段落,您可以使用以下模板。

  <xsl:template match="Text">
    <p>
      <xsl:apply-templates />
    </p>
  </xsl:template>

并且要将样式元素输出为粗体,您将拥有这样的模板:

  <xsl:template match="style[@name='bold']">
    <span style="font-weight:bold">
      <xsl:apply-templates />
      </span>
  </xsl:template>

尝试以下 XSLT

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:strip-space elements="*" />

  <xsl:template match="/">
    <HTML>
      <xsl:apply-templates />
    </HTML>
  </xsl:template>

  <xsl:template match="Text">
    <p>
      <xsl:apply-templates />
    </p>
  </xsl:template>

  <xsl:template match="style[@name='bold']">
    <span style="font-weight:bold">
      <xsl:apply-templates />
      </span>
  </xsl:template>

  <xsl:template match="style">
    <span>
      <xsl:apply-templates />
    </span>
  </xsl:template>
</xsl:stylesheet> 

当应用于您的 XML 时,将输出以下内容

<HTML>
   <p>WGP03068-CNZH-00
      <span style="font-weight:bold">Introduction of the Title</span>xslt
      <span>
         The smallest font size for which kerning should be automatically adjusted.
         </span><span style="font-weight:bold">Reference for this book
         <span>
            The smallest font size for which kerning should be automatically adjusted.
            </span>
         Hope you had a good learning experience.
         </span>
      I am expecting more solution for my doughts.

   </p>
</HTML>

请注意,此 XSLT 使用 XSLT 的内置模板来输出文本。XSLT在哪里<xsl:apply-templates />找到一个文本节点,如果没有匹配的模板,它会自动为您输出文本。

于 2013-05-07T12:51:44.320 回答