○
- "//"
- これは特定ノード以降のすべての子孫を選択する。/article/titleと/article/section/titleの両方を選ぶことになる。
- "*"
- 任意の要素に一致させることができる。
- "|"
- 一致させるパスを複数組み合わせることが可能
- " title | p "とすれば、title要素とp要素に一致する。
- "tag[@attribute='value']
- あるタグ(tag)の属性(attribute)が特定の値(value)である場合に一致する。
- "tag[@attribute]
- あるタグ(tag)の属性(attribute)がある場合に一致する。
- "tag[数字]
- あるタグ(tag)の"数字"番目で指定されたところに一致する。
○入力
<singleErr att1="aaaa" att2="bbbb" > <test>value1</test> </singleErr> <singleErr att1="aacc" att2="bbdd" > <test>value2</test> </singleErr> <singleErr att1="aaee" att2="bbff" > <test>value3</test> </singleErr>
○コンバートxsl
<?xml version="1.0" encoding="shift_jis"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" > <xsl:template match="/" > <xsl:apply-templates /> </xsl:template> <!-- xmlのトップルートに当たるタグ名を指定する --> <xsl:template match="reports" > <html><xsl:apply-templates /></html> </xsl:template> <!-- タグを指定して記述内容を書く --> <xsl:template match="singleErr" > <xsl:value-of select="./@att1" />,<xsl:value-of select="./@att2" /> </xsl:template> <!-- タグを指定して記述内容を書く --> <xsl:template match="DobuleErr/item" > <xsl:value-of select="../@att1" />,<xsl:value-of select="." /> </xsl:template> <!-- タグを指定して記述内容を書くサンプル --> <xsl:template match="singleErr[1]" > <xsl:value-of select="./@att1" /> </xsl:template> <!-- タグを指定して記述内容を書くサンプル --> <xsl:template match="singleErr[@att1='aaee']" > <xsl:value-of select="test" /> </xsl:template> </xsl:stylesheet>
○出力
<html> aaaa aacc,bbdd value3 aagg,error1 aagg,error2 aagg,error3 aaii,error4 aaii,error5 aaii,error6 </html>
これやってみた分かったのは
matchする条件が複数箇所で該当すると
後の条件が適用されるのね。
2箇所で該当して2箇所に出力されることを想定したんだけど・・・^^;