Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/bin/bash
- #################
- # PRELIMINARIES #
- #################
- # Required software:
- # wget, unzip, libxml2-utils, sed, patch, cat
- # Create some temporary work space
- mkdir tmp
- cd tmp
- # Download DDI-L v3.2 specifications
- wget http://www.ddialliance.org/Specification/DDI-Lifecycle/3.2/DDI_3_2_2014-05-15.zip
- # unzip
- unzip DDI_3_2_2014-05-15.zip
- # Copy schemas closer to working directory for convenience
- cp -r DDI_3_2_2014-02-05/DDI_3_2_2014-05-15_Documentation_XMLSchema/XMLSchema .
- #######################
- # PATCHING THE SCHEMA #
- #######################
- # Get the patch
- wget http://www.pastebucket.com/paste/download/72481
- # Need some byte-level juggling here due to CRLF line-endings...
- # Add a trailing CRLF to the patch file
- sed -e '$s/$/\r\n/' -i 72481
- # Verify that the patch works.
- # Here --binary is needed because the file and the patch have CRLF line-endings.
- patch --dry-run --binary --verbose XMLSchema/reusable.xsd <72481
- # Patch the schema
- patch --binary --verbose XMLSchema/reusable.xsd <72481
- ######################
- # TESTING THE SCHEMA #
- ######################
- # Verify the libxml2 version
- xmllint --version
- # xmllint: using libxml version 20901
- # test case valid-1
- cat >test-valid1.xml <<EOF
- <?xml version="1.0" encoding="utf-8"?>
- <ddi:DDIInstance xmlns:ddi="ddi:instance:3_2" xmlns:r="ddi:reusable:3_2">
- <!-- Has both -->
- <r:Agency>acme.org</r:Agency>
- <r:ID>ddi_instance</r:ID>
- <r:Version>1</r:Version>
- <r:URN>urn:ddi:acme.org:ddi_instance:1</r:URN>
- </ddi:DDIInstance>
- EOF
- xmllint --noout -schema XMLSchema/instance.xsd test-valid1.xml
- # test-valid1.xml validates
- # test case valid-2
- cat >test-valid2.xml <<EOF
- <?xml version="1.0" encoding="utf-8"?>
- <ddi:DDIInstance xmlns:ddi="ddi:instance:3_2" xmlns:r="ddi:reusable:3_2">
- <!-- Has only Agency/ID/Version -->
- <r:Agency>acme.org</r:Agency>
- <r:ID>ddi_instance</r:ID>
- <r:Version>1</r:Version>
- </ddi:DDIInstance>
- EOF
- xmllint --noout -schema XMLSchema/instance.xsd test-valid2.xml
- # test-valid2.xml validates
- # test case valid-3
- cat >test-valid3.xml <<EOF
- <?xml version="1.0" encoding="utf-8"?>
- <ddi:DDIInstance xmlns:ddi="ddi:instance:3_2" xmlns:r="ddi:reusable:3_2">
- <!-- Has only URN -->
- <r:URN>urn:ddi:acme.org:ddi_instance:1</r:URN>
- </ddi:DDIInstance>
- EOF
- xmllint --noout -schema XMLSchema/instance.xsd test-valid3.xml
- # test-valid3.xml validates
- # test case invalid-1
- cat >test-invalid1.xml <<EOF
- <?xml version="1.0" encoding="utf-8"?>
- <ddi:DDIInstance xmlns:ddi="ddi:instance:3_2" xmlns:r="ddi:reusable:3_2">
- <!-- Has neither -->
- </ddi:DDIInstance>
- EOF
- xmllint --noout -schema XMLSchema/instance.xsd test-invalid1.xml
- # test-invalid1.xml fails to validate
- # test case invalid-2
- cat >test-invalid2.xml <<EOF
- <?xml version="1.0" encoding="utf-8"?>
- <ddi:DDIInstance xmlns:ddi="ddi:instance:3_2" xmlns:r="ddi:reusable:3_2">
- <!-- Has double Agency/ID/Version -->
- <r:Agency>acme.org</r:Agency>
- <r:ID>ddi_instance1</r:ID>
- <r:Version>1</r:Version>
- <r:Agency>acme.org</r:Agency>
- <r:ID>ddi_instance2</r:ID>
- <r:Version>1</r:Version>
- </ddi:DDIInstance>
- EOF
- xmllint --noout -schema XMLSchema/instance.xsd test-invalid2.xml
- # test-invalid2.xml fails to validate
- # test case invalid-3
- cat >test-invalid3.xml <<EOF
- <?xml version="1.0" encoding="utf-8"?>
- <ddi:DDIInstance xmlns:ddi="ddi:instance:3_2" xmlns:r="ddi:reusable:3_2">
- <!-- Has double URN -->
- <r:URN>urn:ddi:acme.org:ddi_instance1:1</r:URN>
- <r:URN>urn:ddi:acme.org:ddi_instance2:1</r:URN>
- </ddi:DDIInstance>
- EOF
- xmllint --noout -schema XMLSchema/instance.xsd test-invalid3.xml
- # test-invalid3.xml fails to validate
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement