xsl-list
[Top] [All Lists]

Re: Traverse XML Source

2004-08-17 14:23:35
Hi Karl,

there are a few problems with your XSL source:
it contains two templates with the same match attribute
  <xsl:template match="*">
which basically means: match any element.
Template match attributes should be unique, otherwise the 
processor does not know which of the two templates to use.

further, your second template has no effect, because match="@*"
means: match any attribute, and your XML source tree doesn't
have any element with attributes.

you didn't show us the output you expect, but something like:

<xsl:template match="/stuff/abc/def">
  <ul><xsl:apply-templates/></ul>
</xsl:template>

<xsl:template match="path | web | uid | pwd">
  <li><xsl:value-of select="."/></li>
</xsl:template>

will (hopefully) give you this output:

<ul>
  <li>\\path-to-server</li>
  <li>http://my-web-path</li>
  <li>9999</li>
  <li>monkeysee</li>
</ul>

HTH,
Anton Triest

Tuesday, August 17, 2004 10:46 PM, karl(_at_)meetscoresonline(_dot_)com wrote:

Hello,
I would like a very simple XSLT transformation that traverses an XML
source and creates an HTML list output.  Is this an identity
transformation?
So far, I have only been able to get anything to happen on the document
root, and nothing below is traversed.
Thanks for the help.  ~karl

Here is what I have so far,
XML Source:
<stuff>
<abc>
<def>
<path>\\path-to-server</path>
<web>http://my-web-path</web>
<uid>9999</uid>
<pwd>monkeysee</pwd>
</def>
</abc>
</stuff>

XSL Source:
<xsl:template match="*">
  <xsl:copy>
    <xsl:apply-templates select="@*" />
    <xsl:apply-templates />
  </xsl:copy>
</xsl:template>


<xsl:template match="@*">
  <li><xsl:copy-of select="." /></li>
</xsl:template>

<xsl:template match="*">
  <li><xsl:copy-of select="." /></li>
</xsl:template>

</xsl:stylesheet>



<Prev in Thread] Current Thread [Next in Thread>