-
Notifications
You must be signed in to change notification settings - Fork 6
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
15 changed files
with
14,523 additions
and
209 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,91 @@ | ||
<?xml version="1.0" encoding="US-ASCII"?> | ||
<xs:schema | ||
targetNamespace="http://release.niem.gov/niem/appinfo/4.0/" | ||
version="4.0alpha1" | ||
xmlns:appinfo="http://release.niem.gov/niem/appinfo/4.0/" | ||
xmlns:xs="http://www.w3.org/2001/XMLSchema"> | ||
|
||
<xs:annotation> | ||
<xs:documentation>The appinfo schema provides support for high level data model concepts and additional syntax to support the NIEM conceptual model and validation of NIEM-conformant instances.</xs:documentation> | ||
</xs:annotation> | ||
|
||
<xs:attribute name="deprecated"> | ||
<xs:annotation> | ||
<xs:documentation>The Deprecated element provides a method for identifying schema components as being deprecated. A deprecated component is one that is provided, but the use of which is not recommended.</xs:documentation> | ||
</xs:annotation> | ||
<xs:simpleType> | ||
<xs:restriction base="xs:boolean"> | ||
<xs:pattern value="true"/> | ||
</xs:restriction> | ||
</xs:simpleType> | ||
</xs:attribute> | ||
|
||
<xs:attribute name="appliesToTypes"> | ||
<xs:annotation> | ||
<xs:documentation>The appliesToTypes attribute appears on the element declaration of a metadata element. It indicates a set of types to which the metadata element may be applied. The metadata element will also be applicable to any type that is derived from a listed type.</xs:documentation> | ||
</xs:annotation> | ||
<xs:simpleType> | ||
<xs:list itemType="xs:QName"/> | ||
</xs:simpleType> | ||
</xs:attribute> | ||
|
||
<xs:attribute name="appliesToElements"> | ||
<xs:annotation> | ||
<xs:documentation>The appliesToElements attribute appears on the element declaration of a metadata element. It indicates a set of elements to which the metadata element may be applied. The metadata element will also be applicable to any element that is in the substitution group of a listed element.</xs:documentation> | ||
</xs:annotation> | ||
<xs:simpleType> | ||
<xs:list itemType="xs:QName"/> | ||
</xs:simpleType> | ||
</xs:attribute> | ||
|
||
<xs:attribute name="externalAdapterTypeIndicator"> | ||
<xs:annotation> | ||
<xs:documentation>The externalAdapterTypeIndicator attribute indicates that a complex type is an external adapter type. An external adapter type is composed of elements and attributes from non-NIEM-conformant schemas.</xs:documentation> | ||
</xs:annotation> | ||
<xs:simpleType> | ||
<xs:restriction base="xs:boolean"> | ||
<xs:pattern value="true"/> | ||
</xs:restriction> | ||
</xs:simpleType> | ||
</xs:attribute> | ||
|
||
<xs:attribute name="externalImportIndicator"> | ||
<xs:annotation> | ||
<xs:documentation>The externalImportIndicator attribute is true if and only if a namespace identified via xs:import is expected to be non-conformant.</xs:documentation> | ||
</xs:annotation> | ||
<xs:simpleType> | ||
<xs:restriction base="xs:boolean"> | ||
<xs:pattern value="true"/> | ||
</xs:restriction> | ||
</xs:simpleType> | ||
</xs:attribute> | ||
|
||
<xs:element name="LocalTerm"> | ||
<xs:complexType> | ||
<xs:sequence> | ||
<xs:element name="SourceText" type="appinfo:NonemptyStringSimpleType" | ||
minOccurs="0" maxOccurs="unbounded" form="qualified"/> | ||
</xs:sequence> | ||
<xs:attribute name="term" type="appinfo:NonemptyStringSimpleType" use="required"/> | ||
<xs:attribute name="literal" type="appinfo:NonemptyStringSimpleType"/> | ||
<xs:attribute name="definition" type="appinfo:NonemptyStringSimpleType"/> | ||
<xs:attribute name="sourceURIs"> | ||
<xs:simpleType> | ||
<xs:restriction> | ||
<xs:simpleType> | ||
<xs:list itemType="xs:anyURI"/> | ||
</xs:simpleType> | ||
<xs:minLength value="1"/> | ||
</xs:restriction> | ||
</xs:simpleType> | ||
</xs:attribute> | ||
</xs:complexType> | ||
</xs:element> | ||
|
||
<xs:simpleType name="NonemptyStringSimpleType"> | ||
<xs:restriction base="xs:string"> | ||
<xs:minLength value="1"/> | ||
</xs:restriction> | ||
</xs:simpleType> | ||
|
||
</xs:schema> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,289 @@ | ||
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> | ||
<xsl:stylesheet xmlns:xs="http://www.w3.org/2001/XMLSchema" | ||
xmlns:xsd="http://www.w3.org/2001/XMLSchema" | ||
xmlns:saxon="http://saxon.sf.net/" | ||
xmlns:xsl="http://www.w3.org/1999/XSL/Transform" | ||
xmlns:schold="http://www.ascc.net/xml/schematron" | ||
xmlns:iso="http://purl.oclc.org/dsdl/schematron" | ||
xmlns:xhtml="http://www.w3.org/1999/xhtml" | ||
xmlns:ctas="http://release.niem.gov/niem/conformanceTargets/3.0/" | ||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" | ||
version="2.0"><!--Implementers: please note that overriding process-prolog or process-root is | ||
the preferred method for meta-stylesheets to use where possible. --> | ||
<xsl:param name="archiveDirParameter"/> | ||
<xsl:param name="archiveNameParameter"/> | ||
<xsl:param name="fileNameParameter"/> | ||
<xsl:param name="fileDirParameter"/> | ||
|
||
<!--PHASES--> | ||
|
||
|
||
<!--PROLOG--> | ||
<xsl:output xmlns:svrl="http://purl.oclc.org/dsdl/svrl" | ||
method="xml" | ||
omit-xml-declaration="no" | ||
standalone="yes" | ||
indent="yes"/> | ||
|
||
<!--XSD TYPES FOR XSLT2--> | ||
|
||
|
||
<!--KEYS AND FUNCTIONS--> | ||
|
||
|
||
<!--DEFAULT RULES--> | ||
|
||
|
||
<!--MODE: SCHEMATRON-SELECT-FULL-PATH--> | ||
<!--This mode can be used to generate an ugly though full XPath for locators--> | ||
<xsl:template match="*" mode="schematron-select-full-path"> | ||
<xsl:apply-templates select="." mode="schematron-get-full-path"/> | ||
</xsl:template> | ||
|
||
<!--MODE: SCHEMATRON-FULL-PATH--> | ||
<!--This mode can be used to generate an ugly though full XPath for locators--> | ||
<xsl:template match="*" mode="schematron-get-full-path"> | ||
<xsl:apply-templates select="parent::*" mode="schematron-get-full-path"/> | ||
<xsl:text>/</xsl:text> | ||
<xsl:choose> | ||
<xsl:when test="namespace-uri()=''"> | ||
<xsl:value-of select="name()"/> | ||
</xsl:when> | ||
<xsl:otherwise> | ||
<xsl:text>*[local-name()='</xsl:text> | ||
<xsl:value-of select="local-name()"/> | ||
<xsl:text>' and namespace-uri()='</xsl:text> | ||
<xsl:value-of select="namespace-uri()"/> | ||
<xsl:text>']</xsl:text> | ||
</xsl:otherwise> | ||
</xsl:choose> | ||
<xsl:variable name="preceding" | ||
select="count(preceding-sibling::*[local-name()=local-name(current()) and namespace-uri() = namespace-uri(current())])"/> | ||
<xsl:text>[</xsl:text> | ||
<xsl:value-of select="1+ $preceding"/> | ||
<xsl:text>]</xsl:text> | ||
</xsl:template> | ||
<xsl:template match="@*" mode="schematron-get-full-path"> | ||
<xsl:apply-templates select="parent::*" mode="schematron-get-full-path"/> | ||
<xsl:text>/</xsl:text> | ||
<xsl:choose> | ||
<xsl:when test="namespace-uri()=''">@<xsl:value-of select="name()"/> | ||
</xsl:when> | ||
<xsl:otherwise> | ||
<xsl:text>@*[local-name()='</xsl:text> | ||
<xsl:value-of select="local-name()"/> | ||
<xsl:text>' and namespace-uri()='</xsl:text> | ||
<xsl:value-of select="namespace-uri()"/> | ||
<xsl:text>']</xsl:text> | ||
</xsl:otherwise> | ||
</xsl:choose> | ||
</xsl:template> | ||
|
||
<!--MODE: SCHEMATRON-FULL-PATH-2--> | ||
<!--This mode can be used to generate prefixed XPath for humans--> | ||
<xsl:template match="node() | @*" mode="schematron-get-full-path-2"> | ||
<xsl:for-each select="ancestor-or-self::*"> | ||
<xsl:text>/</xsl:text> | ||
<xsl:value-of select="name(.)"/> | ||
<xsl:if test="preceding-sibling::*[name(.)=name(current())]"> | ||
<xsl:text>[</xsl:text> | ||
<xsl:value-of select="count(preceding-sibling::*[name(.)=name(current())])+1"/> | ||
<xsl:text>]</xsl:text> | ||
</xsl:if> | ||
</xsl:for-each> | ||
<xsl:if test="not(self::*)"> | ||
<xsl:text/>/@<xsl:value-of select="name(.)"/> | ||
</xsl:if> | ||
</xsl:template> | ||
<!--MODE: SCHEMATRON-FULL-PATH-3--> | ||
<!--This mode can be used to generate prefixed XPath for humans | ||
(Top-level element has index)--> | ||
<xsl:template match="node() | @*" mode="schematron-get-full-path-3"> | ||
<xsl:for-each select="ancestor-or-self::*"> | ||
<xsl:text>/</xsl:text> | ||
<xsl:value-of select="name(.)"/> | ||
<xsl:if test="parent::*"> | ||
<xsl:text>[</xsl:text> | ||
<xsl:value-of select="count(preceding-sibling::*[name(.)=name(current())])+1"/> | ||
<xsl:text>]</xsl:text> | ||
</xsl:if> | ||
</xsl:for-each> | ||
<xsl:if test="not(self::*)"> | ||
<xsl:text/>/@<xsl:value-of select="name(.)"/> | ||
</xsl:if> | ||
</xsl:template> | ||
|
||
<!--MODE: GENERATE-ID-FROM-PATH --> | ||
<xsl:template match="/" mode="generate-id-from-path"/> | ||
<xsl:template match="text()" mode="generate-id-from-path"> | ||
<xsl:apply-templates select="parent::*" mode="generate-id-from-path"/> | ||
<xsl:value-of select="concat('.text-', 1+count(preceding-sibling::text()), '-')"/> | ||
</xsl:template> | ||
<xsl:template match="comment()" mode="generate-id-from-path"> | ||
<xsl:apply-templates select="parent::*" mode="generate-id-from-path"/> | ||
<xsl:value-of select="concat('.comment-', 1+count(preceding-sibling::comment()), '-')"/> | ||
</xsl:template> | ||
<xsl:template match="processing-instruction()" mode="generate-id-from-path"> | ||
<xsl:apply-templates select="parent::*" mode="generate-id-from-path"/> | ||
<xsl:value-of select="concat('.processing-instruction-', 1+count(preceding-sibling::processing-instruction()), '-')"/> | ||
</xsl:template> | ||
<xsl:template match="@*" mode="generate-id-from-path"> | ||
<xsl:apply-templates select="parent::*" mode="generate-id-from-path"/> | ||
<xsl:value-of select="concat('.@', name())"/> | ||
</xsl:template> | ||
<xsl:template match="*" mode="generate-id-from-path" priority="-0.5"> | ||
<xsl:apply-templates select="parent::*" mode="generate-id-from-path"/> | ||
<xsl:text>.</xsl:text> | ||
<xsl:value-of select="concat('.',name(),'-',1+count(preceding-sibling::*[name()=name(current())]),'-')"/> | ||
</xsl:template> | ||
|
||
<!--MODE: GENERATE-ID-2 --> | ||
<xsl:template match="/" mode="generate-id-2">U</xsl:template> | ||
<xsl:template match="*" mode="generate-id-2" priority="2"> | ||
<xsl:text>U</xsl:text> | ||
<xsl:number level="multiple" count="*"/> | ||
</xsl:template> | ||
<xsl:template match="node()" mode="generate-id-2"> | ||
<xsl:text>U.</xsl:text> | ||
<xsl:number level="multiple" count="*"/> | ||
<xsl:text>n</xsl:text> | ||
<xsl:number count="node()"/> | ||
</xsl:template> | ||
<xsl:template match="@*" mode="generate-id-2"> | ||
<xsl:text>U.</xsl:text> | ||
<xsl:number level="multiple" count="*"/> | ||
<xsl:text>_</xsl:text> | ||
<xsl:value-of select="string-length(local-name(.))"/> | ||
<xsl:text>_</xsl:text> | ||
<xsl:value-of select="translate(name(),':','.')"/> | ||
</xsl:template> | ||
<!--Strip characters--> | ||
<xsl:template match="text()" priority="-1"/> | ||
|
||
<!--SCHEMA SETUP--> | ||
<xsl:template match="/"> | ||
<svrl:schematron-output xmlns:svrl="http://purl.oclc.org/dsdl/svrl" | ||
title="Assertions about CTAS-Conformant Documents" | ||
schemaVersion=""> | ||
<xsl:comment> | ||
<xsl:value-of select="$archiveDirParameter"/> | ||
<xsl:value-of select="$archiveNameParameter"/> | ||
<xsl:value-of select="$fileNameParameter"/> | ||
<xsl:value-of select="$fileDirParameter"/> | ||
</xsl:comment> | ||
<svrl:ns-prefix-in-attribute-values uri="http://www.w3.org/2001/XMLSchema" prefix="xs"/> | ||
<svrl:ns-prefix-in-attribute-values uri="http://www.w3.org/1999/XSL/Transform" prefix="xsl"/> | ||
<svrl:ns-prefix-in-attribute-values uri="http://release.niem.gov/niem/conformanceTargets/3.0/" | ||
prefix="ctas"/> | ||
<svrl:ns-prefix-in-attribute-values uri="http://www.w3.org/2001/XMLSchema-instance" prefix="xsi"/> | ||
<svrl:active-pattern> | ||
<xsl:attribute name="document"> | ||
<xsl:value-of select="document-uri(/)"/> | ||
</xsl:attribute> | ||
<xsl:apply-templates/> | ||
</svrl:active-pattern> | ||
<xsl:apply-templates select="/" mode="M5"/> | ||
<svrl:active-pattern> | ||
<xsl:attribute name="document"> | ||
<xsl:value-of select="document-uri(/)"/> | ||
</xsl:attribute> | ||
<xsl:apply-templates/> | ||
</svrl:active-pattern> | ||
<xsl:apply-templates select="/" mode="M6"/> | ||
<svrl:active-pattern> | ||
<xsl:attribute name="document"> | ||
<xsl:value-of select="document-uri(/)"/> | ||
</xsl:attribute> | ||
<xsl:apply-templates/> | ||
</svrl:active-pattern> | ||
<xsl:apply-templates select="/" mode="M7"/> | ||
</svrl:schematron-output> | ||
</xsl:template> | ||
|
||
<!--SCHEMATRON PATTERNS--> | ||
<svrl:text xmlns:svrl="http://purl.oclc.org/dsdl/svrl">Assertions about CTAS-Conformant Documents</svrl:text> | ||
|
||
<!--PATTERN --> | ||
|
||
|
||
<!--RULE --> | ||
<xsl:template match="*[exists(@ctas:*[local-name() != 'conformanceTargets'])]" | ||
priority="1000" | ||
mode="M5"> | ||
<svrl:fired-rule xmlns:svrl="http://purl.oclc.org/dsdl/svrl" | ||
context="*[exists(@ctas:*[local-name() != 'conformanceTargets'])]"/> | ||
|
||
<!--ASSERT --> | ||
<xsl:choose> | ||
<xsl:when test="false()"/> | ||
<xsl:otherwise> | ||
<svrl:failed-assert xmlns:svrl="http://purl.oclc.org/dsdl/svrl" test="false()"> | ||
<xsl:attribute name="location"> | ||
<xsl:apply-templates select="." mode="schematron-select-full-path"/> | ||
</xsl:attribute> | ||
<svrl:text>Bad attribute (by CTAS rule 3-3: A conformant document MUST NOT contain any element or attribute information item that has the namespace name http://release.niem.gov/conformanceTargets/3.0/, other than attribute {http://release.niem.gov/conformanceTargets/3.0/}conformanceTargets).</svrl:text> | ||
</svrl:failed-assert> | ||
</xsl:otherwise> | ||
</xsl:choose> | ||
<xsl:apply-templates select="*" mode="M5"/> | ||
</xsl:template> | ||
<xsl:template match="text()" priority="-1" mode="M5"/> | ||
<xsl:template match="@*|node()" priority="-2" mode="M5"> | ||
<xsl:apply-templates select="*" mode="M5"/> | ||
</xsl:template> | ||
|
||
<!--PATTERN --> | ||
|
||
|
||
<!--RULE --> | ||
<xsl:template match="ctas:*" priority="1000" mode="M6"> | ||
<svrl:fired-rule xmlns:svrl="http://purl.oclc.org/dsdl/svrl" context="ctas:*"/> | ||
|
||
<!--ASSERT --> | ||
<xsl:choose> | ||
<xsl:when test="false()"/> | ||
<xsl:otherwise> | ||
<svrl:failed-assert xmlns:svrl="http://purl.oclc.org/dsdl/svrl" test="false()"> | ||
<xsl:attribute name="location"> | ||
<xsl:apply-templates select="." mode="schematron-select-full-path"/> | ||
</xsl:attribute> | ||
<svrl:text>Bad element (by CTAS rule 3-3: A conformant document MUST NOT contain any element or attribute information item that has the namespace name http://release.niem.gov/conformanceTargets/3.0/, other than attribute {http://release.niem.gov/conformanceTargets/3.0/}conformanceTargets).</svrl:text> | ||
</svrl:failed-assert> | ||
</xsl:otherwise> | ||
</xsl:choose> | ||
<xsl:apply-templates select="*" mode="M6"/> | ||
</xsl:template> | ||
<xsl:template match="text()" priority="-1" mode="M6"/> | ||
<xsl:template match="@*|node()" priority="-2" mode="M6"> | ||
<xsl:apply-templates select="*" mode="M6"/> | ||
</xsl:template> | ||
|
||
<!--PATTERN --> | ||
|
||
|
||
<!--RULE --> | ||
<xsl:template match="*[exists(@xsi:type['http://release.niem.gov/niem/conformanceTargets/3.0/' = namespace-uri-from-QName(resolve-QName(., ..))])]" | ||
priority="1000" | ||
mode="M7"> | ||
<svrl:fired-rule xmlns:svrl="http://purl.oclc.org/dsdl/svrl" | ||
context="*[exists(@xsi:type['http://release.niem.gov/niem/conformanceTargets/3.0/' = namespace-uri-from-QName(resolve-QName(., ..))])]"/> | ||
|
||
<!--ASSERT --> | ||
<xsl:choose> | ||
<xsl:when test="false()"/> | ||
<xsl:otherwise> | ||
<svrl:failed-assert xmlns:svrl="http://purl.oclc.org/dsdl/svrl" test="false()"> | ||
<xsl:attribute name="location"> | ||
<xsl:apply-templates select="." mode="schematron-select-full-path"/> | ||
</xsl:attribute> | ||
<svrl:text>Bad xsi:type attribute (by CTAS rule 3-4: A conformant document MUST NOT contain an attribute {http://www.w3.org/2001/XMLSchema-instance}type with a value that has a namespace name of http://release.niem.gov/conformanceTargets/3.0/).</svrl:text> | ||
</svrl:failed-assert> | ||
</xsl:otherwise> | ||
</xsl:choose> | ||
<xsl:apply-templates select="*" mode="M7"/> | ||
</xsl:template> | ||
<xsl:template match="text()" priority="-1" mode="M7"/> | ||
<xsl:template match="@*|node()" priority="-2" mode="M7"> | ||
<xsl:apply-templates select="*" mode="M7"/> | ||
</xsl:template> | ||
</xsl:stylesheet> |
Oops, something went wrong.