|
Subject: Re: [xsl] Selection help From: "Syd Bauman s.bauman@xxxxxxx" <xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx> Date: Mon, 30 Nov 2015 22:17:46 -0000 |
Please be careful ... your sample XSLT is not even well-formed XML!
But I *think* what you're looking for is to execute a template for a
<column> iff its @name is the same as the @name of a
constraint/childKey, yes? If so,
<xsl:template match="/root">
<xsl:apply-templates select="table">
<xsl:sort/>
</xsl:apply-templates>
</xsl:template>
<xsl:template match="table">
<xsl:apply-templates select="column[@name eq
current()/constraint[@type='FOREIGN']/childKey/@name]"/>
</xsl:template>
<xsl:template match="column">
<!-- DO STUFF HERE -->
</xsl:template>
ought to do the trick.
> I have some XML similar to:
> <root>
> <table name="SomeName">
> <column name="id" type="INTEGER" collate="" nullable="false" />
> <column name="foo_id" type="INTEGER" collate="" nullable="false" />
> <column name="bar" type="TEXT" collate="NOCASE" nullable="false" />
> <constraint type="FOREIGN" parentTable="OtherName" onDelete="CASCADE" onUpdate="CASCADE">
> <childKey name="foo_id" />
> <parentKey name="id" />
> </constraint>
> </table>
> </root>
>
> For each "table" element, I am iterating through the "column[@name]" values and
> if a "constraint" element with a matching "childKey[@name]" is found, I need to
> perform some conditional logic.
>
> My selector for foo is invalid, I need to select the parent of the matching childKey
> element, however I do not seem to even match the childKey element. Any idea
> as to what I am missing?
>
> <?xml version="1.0" encoding="UTF-8"?>
> <xsl:stylesheet version="2.0"
> xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
> xmlns:xs="http://www.w3.org/2001/XMLSchema">
> <xsl:output method="text" />
>
> <xsl:template match=" /root">
> <xsl:result-document href="result.ext">
> <xsl:call-template name="result" />
> </xsl:template>
>
> <xsl:template name="result">
>
> <xsl:for-each select="table">
> <xsl:sort select="." />
>
> <xsl:variable name="this" select="." />
>
> <xsl:variable name="columns" as="xs:string *">
> <xsl:for-each select="column">
> <xsl:value-of select="@name" />
> </xsl:for-each>
> </xsl:variable>
>
> <xsl:for-each select="$columns">
> <xsl:variable name="foo" select="$this/constraint[@type='FOREIGN']/childKey[@name='.']" />
> <!-- Test foo, output data if present. -->
> </xsl:for-each>
> </xsl:for-each>
> </xsl:template>
> </xsl:stylesheet>
| Current Thread |
|---|
|
| <- Previous | Index | Next -> |
|---|---|---|
| [xsl] Selection help, Joseph L. Casale jca | Thread | Re: [xsl] Selection help, Syd Bauman s.bauman@ |
| [xsl] Selection help, Joseph L. Casale jca | Date | Re: [xsl] Selection help, Syd Bauman s.bauman@ |
| Month |