2

我有一个 xml 文件。我想通过 xsl 更改一些 xml 元素的样式。所以我也有一个 xsl 文件。然后我想在浏览器中查看更改,但我不知道该怎么做?

xml 文件:(test.xml)

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="test2.xsl"?>


<root>
    <Text Style='style1'></Text>
    <Text Style='style2'></Text>
</root>

xsl 文件:(test.xsl)

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:output indent="yes"/>
    <xsl:output method="html"/>
    <xsl:attribute-set name="style1">
        <xsl:attribute name="Font">Arial</xsl:attribute>
        <xsl:attribute name="Bold">true</xsl:attribute>
        <xsl:attribute name="Color">Red</xsl:attribute>
    </xsl:attribute-set>
    <xsl:attribute-set name="style2">
        <xsl:attribute name="Font">Sans</xsl:attribute>
        <xsl:attribute name="Italic">true</xsl:attribute>
    </xsl:attribute-set>
    <xsl:template match="Text[@Style='style1']">
        <xsl:copy use-attribute-sets="style1">
            <xsl:copy-of select="@*[name()!='Style']"/>
            <xsl:apply-templates/>
        </xsl:copy>
    </xsl:template>
    <xsl:template match="Text[@Style='style2']">
        <xsl:copy use-attribute-sets="style2">
            <xsl:copy-of select="@*[name()!='Style']"/>
            <xsl:apply-templates/>
        </xsl:copy>
    </xsl:template>
</xsl:stylesheet>
4

1 回答 1

5

test.xmltest.xsl放在同一目录中,然后test.xml在浏览器中加载 -?xml-stylesheet开头的指令将导致 xsl 被浏览器加载和执行。

话虽如此,应用于 XML 测试文件的 XSL 会产生以下输出:

<Text Font="Arial" Bold="true" Color="Red"></Text>
<Text Font="Sans" Italic="true"></Text>

这不是有效的 HTML,因此您不会在浏览器中看到任何内容。

要查看一些输出,请尝试使用此 XSL:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:output indent="yes"/>
  <xsl:output method="html"/>

  <xsl:template match="Text[@Style='style1']">
    <p style="font-family: Arial; font-weight: bold; color: red">
      <xsl:apply-templates/>
    </p>
  </xsl:template>

  <xsl:template match="Text[@Style='style2']">
    <p style="font-family: Sans-Serif; font-style: italic">
      <xsl:apply-templates/>
    </p>
  </xsl:template>

</xsl:stylesheet>

生成p带有样式属性的 HTML 标记。另请注意,您需要添加一些文本以在 XML 测试文件中应用样式:

<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type="text/xsl" href="test2.xsl"?>
<root>
  <Text Style='style1'>Text in style 1</Text>
  <Text Style='style2'>Text in style 2</Text>
</root>
于 2013-08-18T17:56:04.140 回答