| <html x:found="true" x:href="http://www.w3.org/TR/xslt#element-attribute" xmlns:x="urn:xslt-documentation" xmlns="http://www.w3.org/1999/xhtml"> |
| <head> |
| |
| <style type="text/css" id="w3c"> |
| a.external { |
| text-decoration: none; |
| border-bottom-color: blue; |
| border-bottom-style: dashed; |
| border-bottom-width: thin; |
| } |
| |
| p.element-syntax { |
| border-color: black; |
| border-style: solid; |
| border-width: thin; |
| } |
| |
| /* 2005-10-03: Modified to work with Java's HTML displaying capabilities */ |
| |
| /* Style for a "Recommendation" (http://www.w3.org/StyleSheets/TR/W3C-REC) */ |
| |
| /* |
| Copyright 1997-2003 W3C (MIT, ERCIM, Keio). All Rights Reserved. |
| The following software licensing rules apply: |
| http://www.w3.org/Consortium/Legal/copyright-software */ |
| |
| body { |
| margin: 0; |
| font-family: sans-serif; |
| color: black; |
| background-position: top left; |
| } |
| |
| :link { |
| color: #00C; |
| background: transparent |
| } |
| |
| :visited { |
| color: #609; |
| background: transparent |
| } |
| |
| a:active { |
| color: #C00; |
| background: transparent |
| } |
| |
| a:link img, a:visited img { |
| border-style: none |
| } |
| |
| /* no border on img links */ |
| |
| a img { |
| color: white; |
| } |
| |
| th, td { |
| /* ns 4 */ |
| font-family: sans-serif; |
| } |
| |
| h1, h2, h3, h4, h5, h6 { |
| text-align: left |
| } |
| |
| /* background should be transparent, but WebTV has a bug */ |
| h1, h2, h3 { |
| color: #005A9C; |
| } |
| |
| h1 { |
| font: 170% sans-serif |
| } |
| |
| h2 { |
| font: 140% sans-serif |
| } |
| |
| h3 { |
| font: 100% sans-serif |
| } |
| |
| h4 { |
| font: bold 100% sans-serif |
| } |
| |
| h5 { |
| font: italic 100% sans-serif |
| } |
| |
| h6 { |
| font: small-caps 100% sans-serif |
| } |
| |
| .hide { |
| display: none |
| } |
| |
| div.head { |
| margin-bottom: 1em |
| } |
| |
| div.head h1 { |
| margin-top: 2em; |
| clear: both |
| } |
| |
| div.head table { |
| margin-left: 2em; |
| margin-top: 2em |
| } |
| |
| p.copyright { |
| margin-top: 15px; |
| font-size: 90% |
| } |
| |
| p.copyright small { |
| font-size: small |
| } |
| |
| /* hide from IE3 */ |
| a[href]:hover { |
| background: #ffa |
| } |
| |
| pre { |
| margin-left: 2em |
| } |
| |
| /* |
| p { |
| margin-top: 0.6em; |
| margin-bottom: 0.6em; |
| } |
| */ |
| dt, dd { |
| margin-top: 0; |
| margin-bottom: 0 |
| } |
| |
| /* opera 3.50 */ |
| dt { |
| font-weight: bold |
| } |
| |
| pre, code { |
| font-family: monospace |
| } |
| |
| /* navigator 4 requires this */ |
| |
| ul.toc { |
| list-style: disc; /* Mac NS has problem with 'none' */ |
| list-style: none; |
| } |
| </style> |
| </head> |
| <body> |
| |
| <h3> |
| <a name="creating-attributes"></a>Creating Attributes with |
| <code>xsl:attribute</code> |
| </h3> |
| |
| |
| <p class="element-syntax"> |
| <a name="element-attribute"></a><code><!-- |
| Category: instruction --><br> |
| <xsl:attribute<br> |
| <b>name</b> = { <var>qname</var> }<br> |
| namespace = { <var>uri-reference</var> }><br> |
| <!-- Content: <var>template</var> --><br> |
| </xsl:attribute></code> |
| </p> |
| |
| |
| <p>The <code>xsl:attribute</code> element can be used to add attributes to |
| result elements whether created by literal result elements in the stylesheet |
| or by instructions such as <code>xsl:element</code>. The <a class="external" href="http://www.w3.org/TR/xpath#dt-expanded-name">expanded-name</a> of the |
| attribute to be created is specified by a required <code>name</code> |
| attribute and an optional <code>namespace</code> attribute. Instantiating an |
| <code>xsl:attribute</code> element adds an attribute node to the containing |
| result element node. The content of the <code>xsl:attribute</code> element is |
| a template for the value of the created attribute.</p> |
| |
| |
| <p>The <code>name</code> attribute is interpreted as an <a class="external" href="http://www.w3.org/TR/xslt#dt-attribute-value-template">attribute value template</a>. It is an |
| error if the string that results from instantiating the attribute value |
| template is not a <a class="external" href="http://www.w3.org/TR/REC-xml-names#NT-QName">QName</a> or is the string |
| <code>xmlns</code>. An XSLT processor may signal the error; if it does not |
| signal the error, it must recover by not adding the attribute to the result |
| tree. If the <code>namespace</code> attribute is not present, then the <a class="external" href="http://www.w3.org/TR/REC-xml-names#NT-QName">QName</a> is expanded into |
| an expanded-name using the namespace declarations in effect for the |
| <code>xsl:attribute</code> element, <i>not</i> including any default |
| namespace declaration.</p> |
| |
| |
| <p>If the <code>namespace</code> attribute is present, then it also is |
| interpreted as an <a class="external" href="http://www.w3.org/TR/xslt#dt-attribute-value-template">attribute value |
| template</a>. The string that results from instantiating it should be a URI |
| reference. It is not an error if the string is not a syntactically legal URI |
| reference. If the string is empty, then the expanded-name of the attribute |
| has a null namespace URI. Otherwise, the string is used as the namespace URI |
| of the expanded-name of the attribute to be created. The local part of the <a class="external" href="http://www.w3.org/TR/REC-xml-names#NT-QName">QName</a> specified by the |
| <code>name</code> attribute is used as the local part of the expanded-name of |
| the attribute to be created.</p> |
| |
| |
| <p>XSLT processors may make use of the prefix of the <a class="external" href="http://www.w3.org/TR/REC-xml-names#NT-QName">QName</a> specified in the |
| <code>name</code> attribute when selecting the prefix used for outputting the |
| created attribute as XML; however, they are not required to do so and, if the |
| prefix is <code>xmlns</code>, they must not do so. Thus, although it is not |
| an error to do:</p> |
| |
| <pre><xsl:attribute name="xmlns:xsl" namespace="whatever">http://www.w3.org/1999/XSL/Transform</xsl:attribute></pre> |
| |
| |
| <p>it will not result in a namespace declaration being output.</p> |
| |
| |
| <p>Adding an attribute to an element replaces any existing attribute of that |
| element with the same expanded-name.</p> |
| |
| |
| <p>The following are all errors:</p> |
| |
| <ul> |
| |
| <li> |
| <p>Adding an attribute to an element after children have been added to |
| it; implementations may either signal the error or ignore the |
| attribute.</p> |
| |
| </li> |
| |
| <li> |
| <p>Adding an attribute to a node that is not an element; |
| implementations may either signal the error or ignore the attribute.</p> |
| |
| </li> |
| |
| <li> |
| <p>Creating nodes other than text nodes during the instantiation of the |
| content of the <code>xsl:attribute</code> element; implementations may |
| either signal the error or ignore the offending nodes.</p> |
| |
| </li> |
| |
| </ul> |
| |
| |
| <blockquote> |
| |
| <b>NOTE:</b>When an <code>xsl:attribute</code> contains a text node with a |
| newline, then the XML output must contain a character reference. For |
| example, |
| <pre><xsl:attribute name="a">x |
| y</xsl:attribute></pre> |
| will result in the output |
| <pre>a="x&#xA;y"</pre> |
| (or with any equivalent character reference). The XML output cannot be |
| <pre>a="x |
| y"</pre> |
| This is because XML 1.0 requires newline characters in attribute values to |
| be normalized into spaces but requires character references to newline |
| characters not to be normalized. The attribute values in the data model |
| represent the attribute value after normalization. If a newline occurring |
| in an attribute value in the tree were output as a newline character rather |
| than as character reference, then the attribute value in the tree created |
| by reparsing the XML would contain a space not a newline, which would mean |
| that the tree had not been output correctly.</blockquote> |
| |
| <p id="w3c-footer" class="copyright"> |
| <a href="http://www.w3.org/Consortium/Legal/ipr-notice.html#Copyright">Copyright</a> |
| © 1999 <a href="http://www.w3.org">W3C</a><sup>®</sup> |
| (<a href="http://www.lcs.mit.edu">MIT</a>, <a href="http://www.inria.fr/">INRIA</a>, |
| <a href="http://www.keio.ac.jp/">Keio</a>), All Rights Reserved. |
| </p> |
| </body> |
| </html> |