I think you are trying to test whether the current node is an attribute
node or a namespace node. As you've discovered, that's surprisingly
tricky in XPath 1.0. Your way is one possibility, another is
test="count(. | ../@*) = count(../@*)"
But it might be better to stand back and ask why you are in a position
where you need to ask this question. Why are you processing attribute
nodes and namespace nodes using the same code? Could you avoid doing this?
Michael Kay
Saxonica
On 16/08/2010 13:35, Hermann Stamm-Wilbrandt wrote:
Hello,
this is a pure XSLT 1.0 question.
Below template does the (readable) output of the current node even for
attribute and namespace nodes.
In the spec the following is stated:
"There is no pattern that can match a namespace node, ...".
So I tried it with negative matches for node, pi, comment and text.
But now the differentiation between namespace node and attribute node
( for output of xnlns:ns1="..." / xmlns="..." / attr="..." )
seems a bit complex to me.
Can this be simplified?
<xsl:template match="@*">
attribute
</xsl:template>
<xsl:template name="doOutput">
<xsl:choose>
<!-- attribute could be matched, namespace not - handle both -->
<xsl:when test="not(node()|processing-instruction()|comment()|text
())">
<xsl:variable name="isAttribute">
<xsl:apply-templates select="."/>
</xsl:variable>
<xsl:if test="$isAttribute=''">
<xsl:text>xmlns</xsl:text>
<xsl:if test="name()">:</xsl:if>
</xsl:if>
<xsl:value-of select="name()"/>
<xsl:text>="</xsl:text>
<xsl:value-of select="string()"/>
<xsl:text>"</xsl:text>
</xsl:when>
<xsl:otherwise>
<xsl:copy-of select="."/>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
Mit besten Gruessen / Best wishes,
Hermann Stamm-Wilbrandt
Developer, XML Compiler, L3
WebSphere DataPower SOA Appliances
----------------------------------------------------------------------
IBM Deutschland Research& Development GmbH
Vorsitzender des Aufsichtsrats: Martin Jetter
Geschaeftsfuehrung: Dirk Wittkopp
Sitz der Gesellschaft: Boeblingen
Registergericht: Amtsgericht Stuttgart, HRB 243294
--~------------------------------------------------------------------
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail:<mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--
--~------------------------------------------------------------------
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--