[XSL-LIST Mailing List Archive Home] [By Thread] [By Date]

[xsl] Find invalid IDREFs

Subject: [xsl] Find invalid IDREFs
From: charlieo0@xxxxxxxxxxx
Date: Thu, 17 May 2012 20:42:03 +0000 (UTC)

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"?>

My XSLT, which renders no results:

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
   <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)"/>


C Flanders

Current Thread