Actually, could you try out this one?  It eliminates step 3, too -- no more 
need 
to edit that XML_CATALOG_FILES line.  I've also added a CDDL header.

Mike
================================================

bash-3.00$ cat validate
#!/bin/sh
#
# CDDL HEADER START
#
# The contents of this file are subject to the terms of the
# Common Development and Distribution License, Version 1.0 only
# (the "License").  You may not use this file except in compliance
# with the License.
#
# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
# or http://www.opensolaris.org/os/licensing.
# See the License for the specific language governing permissions
# and limitations under the License.
#
# When distributing Covered Code, include this CDDL HEADER in each
# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
# If applicable, add the following below this CDDL HEADER, with the
# fields enclosed by brackets "[]" replaced with your own identifying
# information: Portions Copyright [yyyy] [name of copyright owner]
#
# CDDL HEADER END
#

MYLOCATION=`pwd`/$0; export MYLOCATION
XML_CATALOG_FILES=`dirname $MYLOCATION`/catalog.xml; export XML_CATALOG_FILES
#echo XML_CATALOG_FILES = $XML_CATALOG_FILES
if xmllint --memory --valid --noout *.book; then
         echo No validation errors found in *.book .
else
         echo Errors found in *.book .
fi





michelle olson wrote:
> Awesome! It works for me. Thank you so much Mike, I will add these two 
> new files to common and update the instructions.
> 
> -Michelle
> 
> Michael Pogue wrote:
>> OK, here's the recipe (could somebody please try out these 
>> instructions, to make sure everything works correctly?):
>>
>> 1) Create a "catalog.xml" file in your "common/" directory.  Michelle, 
>> we should create this file in the common/ directory, so that this step 
>> can be eliminated.
>>
>> bash-3.00$ cat catalog.xml
>> <?xml version="1.0"?>
>> <!DOCTYPE catalog PUBLIC "-//OASIS//DTD Entity Resolution XML Catalog 
>> V1.0//EN" 
>> "http://www.oasis-open.org/committees/entity/release/1.0/catalog.dtd";>
>> <catalog xmlns="urn:oasis:names:tc:entity:xmlns:xml:catalog">
>>   <public publicId="-//Sun Microsystems//DTD SolBook-XML 3.5//EN" 
>> uri="xsolbook.dtd"/>
>> </catalog>
>>
>>     Note that the catalog refers to "xsolbook.dtd", and not 
>> "solbook.dtd".
>>     No need to rename the file!!
>>
>> 2) Create the following file, called "validate" in your "common/" 
>> directory.
>> Michelle, I think we should put this file in common/, too.  That would 
>> eliminate step 2.
>>
>> bash-3.00$ cat validate
>> #!/bin/sh
>> #
>> # Copyright 2008 Sun Microsystems, Inc.  All rights reserved.
>> # Use is subject to license terms.
>> #
>>
>> XML_CATALOG_FILES=/home/myusername/docs2/20080215/common/catalog.xml; \
>> export XML_CATALOG_FILES
>> if xmllint --memory --valid --noout *.book; then
>>         echo No validation errors found in *.book .
>> else
>>         echo Errors found in *.book .
>> fi
>>
>> 3) Change the XML_CATALOG_FILES= statement in validate to point at the
>>    "catalog.xml" file you created in step 1.  You only have to do this
>>    once.
>>
>> 4) cd to the directory containing the book you want to validate.
>>
>>    cd /home/myusername/docs2/20080215/DYNMCTRCGGD
>>
>> 5) Run the validate command.  It will validate the .book file (and 
>> everything that the .book file includes).
>>
>> bash-3.00$ ../common/validate
>> No validation errors found in DYNMCTRCGGD.book .
>>
>> Mike
>>
>>
>> michelle olson wrote:
>>> Hi Mike,
>>>
>>> OK, any help you can give on the catalogs would be greatly 
>>> appreciated. That was my original intent, but the work hasn't been 
>>> completed because I have no experience with XML catalogs.
>>>
>>> thanks,
>>> Michelle
>>>
>>> Michael Pogue wrote:
>>>> I've been thinking about that....
>>>>
>>>> I don't think the best approach is to make N copies (in this case, N 
>>>> = 36) of the dtd and entities file.  If we do that in the 
>>>> repository, they will diverge.  It would be better to keep them in 
>>>> one place (like "common"), but have the validation script reference 
>>>> them there.
>>>>
>>>> The best way to fix this is probably to use XML catalogs.  It looks 
>>>> like the .dtd and sun-iso files are referenced via PUBLIC entities, 
>>>> so this should work.
>>>>
>>>> Mike
>>>>
>>>> michelle olson wrote:
>>>>>
>>>>>
>>>>> Michael Pogue wrote:
>>>>>> That's better, but it still generates errors, because the entities 
>>>>>> are actually defined elsewhere.  It turns out that copying 
>>>>>> "common/sun-iso-map.xml" to the DYNMCTRCGGD directory does make it 
>>>>>> work the rest of the way!
>>>>> OK, cool, I'm glad you've made progress, I eagerly await a push 
>>>>> notification! :)
>>>>>>
>>>>>> I verified that "xmllint --valid --noout DYNMCTRCGGD.book" 
>>>>>> complains (correctly) when I insert validity errors into the .book 
>>>>>> file, the sun-iso-map.xml file, and into the chapter1.xml file.  
>>>>>> So, I think we have a validation process that works now.
>>>>>>
>>>>>> We should make it easier to use, though!
>>>>> OK, so I'll put a copy of the correctly named dtd and the 
>>>>> sun-iso-map files into each book directory in the next update of 
>>>>> the consolidation. Then, we should update the instructions to make 
>>>>> explicit that xmllint should be run on the book file. What else can 
>>>>> we do to make it easier?
>>>>>
>>>>> thanks,
>>>>> Michelle
>>>>>>
>>>>>> Mike
>>>>>>
>>>>>> michelle olson wrote:
>>>>>> ...
>>>>>>> Thanks for continuing to work on this. I found a couple things 
>>>>>>> that might also help Rainer. So, try doing the following:
>>>>>>>
>>>>>>> -copy the xsolbook.dtd from the 20080215/common directory to your 
>>>>>>> DYNMCTRCGGD directory.
>>>>>>> -rename the xsolbook.dtd file to solbook.dtd.
>>>>>>> -issue the xmllint --valid --noout DYNMCTRCGGD.book
>>>>>>>
>>>>>> ...

Reply via email to