xsl-list
[Top] [All Lists]

[xsl] Find invalid IDREFs

2012-05-17 15:42:14
I am completely stuck figuring this out. I have list of IDREFs captured from an 
error report. I created a well-formed XML instance from the list of values. 
This is list of IDREFs that have no corresponding ID. I need to find these 
IDREF atrributes in a very large collection of files and generate a report that 
tells writers what files the errors are located.

The validation report was generated from a concatenated, very large complete 
manual. I can locate the errors in that file, but that's not how the manual is 
worked. I need to locate each error in the sub-files.

How do I walk through the list of IDREF elements, locate them in a collection 
of approx. 600 files and generate a report? Any help is appreciated.

XSLT 2.0

My list of IDREFs looks like this (abbreviated):


<?xml version="1.0" encoding="UTF-8"?>
<IDREFS>
<IDREF>NSN-</IDREF>
<IDREF>NSN-</IDREF>
<IDREF>m2025792355320</IDREF>
<IDREF>m22040592355332</IDREF>
<IDREF>m22040592355332</IDREF>
<IDREF>m22040592355332</IDREF>
<IDREF>m2034792355320</IDREF>
<IDREF>m2050492355320</IDREF>
</IDREFS>

My XSLT, which renders no results:


<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"; 
      xmlns:xs="http://www.w3.org/2001/XMLSchema";
      exclude-result-prefixes="xs"
      version="2.0">
    
   <xsl:output method="text"  omit-xml-declaration="yes" indent="no" />
   <xsl:param name="collection" 
select="collection('file:/M:/?select=M2*.xml')"/>
   <xsl:variable name="IDREFS" select="document('file:/C:/IDREFS.xml')"/>
    <xsl:key name="VALUE" match="IDREFS" use="child::IDREF"/>
    
    <xsl:template match="/">
        <xsl:result-document method="text" href="file:/C:/bae/test.txt">
        <xsl:for-each select="$collection//@wpid | //@itemid">
            <xsl:variable name="ATTR" select="."/>
            <xsl:for-each select="$IDREFS">
                <xsl:value-of select="base-uri(.)"/><xsl:value-of 
select="key('VALUE',$ATTR)"/>
            </xsl:for-each>
            <xsl:text>&#x0A;</xsl:text>
        </xsl:for-each>
    </xsl:result-document>
    </xsl:template>

</xsl:stylesheet>



C Flanders


--~------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--

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