xml file:
<?xml version="1.0" ?> <?xml-stylesheet type="text/xsl" href="style.xsl"?> <manual type="assembly" id="model-rocket"> <parts-list> <part label="A" count="1">fuselage, left half</part> <part label="B" count="1">fuselage, right half</part> <part label="F" count="4">steering fin</part> <part label="N" count="3">rocket nozzle</part> <part label="C" count="1">crew capsule</part> </parts-list> <instructions> <step> Glue <part ref="A"/> and <part ref="B"/> together to form the fuselage. </step> <step> For each <part ref="F"/>, apply glue and insert it into slots in the fuselage. </step> <step> Affix <part ref="N"/> to the fuselage bottom with a small amount of glue. </step> <step> Connect <part ref="C"/> to the top of the fuselage. Do not use any glue, as it is spring-loaded to detach from the fuselage. </step> </instructions> </manual>
xslt file:
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0" >
<xsl:output method="html" encoding="ISO-8859-1" />
<xsl:template match="manual"> <html> <head><title>Instrutions Guide</title></head> <body> <h1>Instructions Guide</h1> <xsl:apply-templates/> </body> </html> </xsl:template>
<xsl:template match="parts-list"> <h2>Parts</h2> <dl> <xsl:apply-templates/> </dl> </xsl:template>
<xsl:template match="part[@label]"> <dt> <xsl:value-of select="@label"/> </dt> <dd> <xsl:apply-templates/> </dd> </xsl:template> <xsl:template match="part[@ref]"> <xsl:variable name="label" select="@ref" /> <xsl:value-of select="//part[@label=$label]" /> <xsl:text> (Part </xsl:text> <xsl:value-of select="@ref" /> <xsl:text> ) </xsl:text> </xsl:template>
</xsl:stylesheet>
属性的设置可以覆盖的,所以如果第一个template是对manaul的设置,并不 意味着将整个xml文件按照设置输出,还要看后面的对各个element的样式设置.

|