OASIS Mailing List ArchivesView the OASIS mailing list archive below
or browse/search using MarkMail.

 


Help: OASIS Mailing Lists Help | MarkMail Help

 


 

   Re: [xml-dev] Checking for elements

[ Lists Home | Date Index | Thread Index ]

XSLT works for this kind of thing and its pretty easy, too. Say the file
data.xml is expected to contain the elements cow and chicken but 
it doesn't:

C:\XML\Examples>cat data.xml
<data>
 <pig/>
 <chicken/>
 <horse/>
</data>

Here's an XSLT stylesheet that checks for the the cow and chicken elements
in data.xml:

C:\XML\Examples>cat check.xsl
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform";>
<xsl:output method="text"/>

<xsl:template match="data">
<xsl:choose>
 <xsl:when test="not(chicken)">
  <xsl:message>chicken element not found</xsl:message>
 </xsl:when>
 <xsl:when test="not(cow)">
  <xsl:message>cow element not found</xsl:message>
 </xsl:when>
 <xsl:otherwise>
  <xsl:message>All needed elements found</xsl:message>
 </xsl:otherwise>
</xsl:choose>
</xsl:template>

</xsl:stylesheet>

If data.xml contains both cow and chicken, you'll get a report saying that
all the needed elements are found. If not, you get a complaint:

C:\XML\Examples>saxon data.xml check.xsl
cow element not found

Hope this works for you.

Mike

Noah Genner wrote:

> Hello All,
>  I'm new to all this and I'm looking for some direction.
>  I need to be able to check an XML document for some specific elements, and if
> possible produce a little report on which ones are missing. The document has
> already been validated against a dtd/schema that contains approximately 270
> elements, but I need to check that the ~40 I need are present. If they aren't
> present I want to produce a little report that says which elements are not present. 
>  Can I do this with XSLT, or is there an easier way to do this?   
> 
> Thanks,
> 




 

News | XML in Industry | Calendar | XML Registry
Marketplace | Resources | MyXML.org | Sponsors | Privacy Statement

Copyright 2001 XML.org. This site is hosted by OASIS