Using the Or operator, , you can match to a number of possible patterns, which is very useful when your documents get a little more involved. In the following example, I want to display < NAME > and <MASS> elements in bold, which I do with the HTML <B> tag. To match either <NAME> or <MASS> elements, Ill use the Or operator in a new rule:
<?xml version="1.0"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:template match="/PLANETS"> <HTML> <HEAD> . . . </BODY> </HTML> </xsl:template> <xsl:template match="PLANET"> <TR> <TD><xsl:apply-templates select="NAME"/></TD> <TD><xsl:apply-templates select="MASS"/></TD> <TD><xsl:apply-templates select="RADIUS"/></TD> <TD><xsl:apply-templates select="DAY"/></TD> </TR> </xsl:template> <xsl:template match="NAME MASS"> <B> <xsl:apply-templates/> </B> </xsl:template> <xsl:template match="RADIUS"> <xsl:value-of select="."/> <xsl:text> </xsl:text> <xsl:value-of select="@UNITS"/> </xsl:template> <xsl:template match="DAY"> <xsl:value-of select="."/> <xsl:text> </xsl:text> <xsl:value-of select="@UNITS"/> </xsl:template> </xsl:stylesheet>
Here are the results; note that the name and mass values are both enclosed in <B> elements:
<HTML> <HEAD> <TITLE> The Planets Table </TITLE> </HEAD> <BODY> . . . <TR> <TD><B>Mercury</B></TD> <TD><B>.0553</B></TD> <TD>1516 miles</TD> <TD>58.65 days</TD> </TR> <TR> <TD><B>Venus</B></TD> <TD><B>.815</B></TD> <TD>3716 miles</TD> <TD>116.75 days</TD> </TR> <TR> <TD><B>Earth</B></TD> <TD><B>1</B></TD> <TD>2107 miles</TD> <TD>1 days</TD> </TR> </TABLE> </BODY> </HTML>
You can use any valid pattern with the operator, such as expressions like "PLANET PLANET//NAME" , and you can use multiple operators, like "NAME MASS DAY" , and so on.