Hubert Holtz wrote:
I often visit tutorial-sites to get my informations (and now this great
mail-list) and there was no "and", only a | for or.
"|" never really means "or".
In an XSLT pattern, which is what goes in a "match" attribute, it's just a
separator between node tests when used in a pattern. Depending on how you like
to interpret your code into English, you might use the words "or" or "and"
informally.
For example, <xsl:template match="foo|bar"> says this template is a good match
for a node that matches the test foo (element named foo in no namespace), and
it is also a good match for a node that matches the test bar (element named
bar in no namespace). Since a programmer might be used to reading "|" as
"or", it would be just as correct to say "this template is a good match for a
foo or a bar".
In an XPath expression, "|" is a set union operator.
In mathematics, a set is an unordered group of values, typically written (in
math, not XPath) as a comma-separated list inside curly braces: {1,2,3,4}.
Order doesn't matter. The union of two sets is the result of merging them and
eliminating duplicates. The union of {1,2,3,4} and {2,3,5} is {1,2,3,4,5}.
In XPath, it works the same way with nodes. select="foo|bar" means to use the
union of the node-set {all child::foo elements} and the node-set {all
child::bar elements}, producing the node-set.
Note that I'm mixing notations here; there are no curly braces in XPath, and
in XSLT they are only used in XSLT Attribute Value Templates to delimit XPath
expressions embedded in literal attribute values.
Mike
--
Mike J. Brown | http://skew.org/~mike/resume/
Denver, CO, USA | http://skew.org/xml/
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list