xsl-list
[Top] [All Lists]

RE: Nesting <xsl:value-of> tags

2003-02-03 14:27:44
Zvolensky, Thomas J {PGL~Nutley} wrote:

I have an xsl stylesheet that reads an xml document and selects
all nodes having a specific non-blank attribute.

The skeleton of my tags is as follows:


<xsl:for-each select="//*[./@filename != '']">
.
.
<xsl:value-of
select="document('ShareWebUsers.xml')//person[id=<xsl:value-of
select="../@ownedby"/>]/ntname"/>
.
.
</xsl:for-each>


In the middle, I have an <xsl:value-of> tag that reads a value
from another document (ShareWebUsers.xml) and returns the value
of the <ntname> tag based on the value of "ownedby" attribute of
the current node.

When I use the code as described above, XMLSPY informs me that my
XML is not well-formed.

Is it possible to nest <xsl: value-of> tags like this?

No, XSLT does not allow it, but even more fundamentally, it is not
well-formed XML.


If not,
is there another way to look up the value of <ntname> from the
other document?

Since you are confused on this issue, it is unclear to me what you intend
".." to mean:
    o   parent of the "current node" ("current" is node selected by
        "//*[./@filename != '']")
    o   parent of the "context node" ("context" is node selected by
        "document('ShareWebUsers.xml')//person")

If you want the current node's parent, use this:

    <xsl:value-of
    select =
    "document('ShareWebUsers.xml')//person[id =
current()/../@ownedby"/>]/ntname"
    />

If you want the context node's parent, use this:

    <xsl:value-of
    select =
    "document('ShareWebUsers.xml')//person[id = ../@ownedby"/>]/ntname"
    />

I hope this helps!

-- Roger Glover
   glover_roger(_at_)yahoo(_dot_)com



 XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list



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