Altova Mailing List Archives>Archive Index >microsoft.public.xml Archive Home >Recent entries >Thread Prev - Pick/Choose XML from XSL [Thread Next] Re: Pick/Choose XML from XSLTo: NULL Date: 12/2/2004 3:29:00 PM Try this:
<xsl:choose>
<xsl:when test="task/message[@priority='info']">
<h4>
<xsl:text>Target: </xsl:text>
<xsl:value-of select="@name"/>
</h4>
<!-- show the messages -->
<xsl:apply-templates select="task"/>
</xsl:when>
</xsl:choose>
"Prabh" <Prab_kar@h...> wrote in message
news:e7774537.0412011405.6cc33b1e@p......
> Hello all,
> I want to HTML-ize an .xml (Test.xml) file and am running into a
> problem with my XSL file.
>
> The .xml contains info about each tag, called 'targets' and each
> target has a message with certain priority. I want to bundle all these
> targets in a top-area which have "a href" links to the details section
> down below. Also, I want to ignore messages with 'debug' priority and
> print only the 'info' priority messages.
>
>
> Test.xml:
> ==========================X M L==================================
> <?xml version="1.0" encoding="UTF-8" ?>
> <?xml-stylesheet type="text/xsl" href="Test.xsl"?>
>
> <main>
> <target name="TargetOne">
> <task>
> <message priority="info"><![CDATA[Info about Target One]]></message>
> </task>
> </target>
>
> <target name="TargetTwo">
> <task>
> <message priority="debug"><![CDATA[Info about Target Two: Ideally I
> shouldnt be displayed!!]]></message>
> </task>
> </target>
>
> <target name="TargetThree">
> <task>
> <message priority="info"><![CDATA[Info about Target Three]]>
> </message>
> </task>
> </target>
>
> </main>
>
> ==========================X M L==================================
>
>
>
> I've gotten this far with my .xsl:
>
> ==========================X S L==================================
>
> <?xml version="1.0"?>
> <xsl:stylesheet version="1.0"
> xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
> <xsl:output method="html" indent="yes"/>
>
> <xsl:template match="main">
> <html>
> <body>
>
> <!-- make header links -->
> <xsl:for-each select="target">
> <xsl:if test="@name='TargetOne'
> or @name='TargetTwo'
> or @name='TargetThree'">
> <a href="#{generate-id()}"> <xsl:value-of select="@name"/>
> </a>
> <br/>
> </xsl:if>
> </xsl:for-each>
>
> <hr/>
> <!-- show the targets, tasks and messages -->
> <xsl:apply-templates select="target"/>
>
> </body>
> </html>
>
> </xsl:template>
>
>
> <xsl:template match="target">
> <xsl:if test="@name='TargetOne'
> or @name='TargetTwo'
> or @name='TargetThree'">
> <a name="{generate-id()}"/>
> </xsl:if>
>
> <h4>
> <xsl:text>Target: </xsl:text>
> <xsl:value-of select="@name"/>
> </h4>
>
> <!-- show the messages -->
> <xsl:apply-templates select="task"/>
> </xsl:template>
>
> </xsl:stylesheet>
> ==========================X S L==================================
>
> I can now print the desired HTML with targets bundled up in a top-area
> with links to details down below. But, I'm unable to ignore/discard
> the 'debug' messages. I'm trying to use '<xsl:template
> match="message[@priority] != 'debug'
> but it doesn seem to work, the Target Two is always being printed.
>
> Could anyone give me pointers on how to go about this, please?
>
> Thanks for your time,
> Prabh
| ||||||
| Company | Legal | Press | Partners | Careers | Sitemap | Contact Us | Altova Blog | Mobile | Full Site | |||
|
