<?xml version="1.0"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">

<xs:annotation>
	<xs:documentation>
		This schema defines National Vulnerability Database Translated XML files.
		These files contain descriptions and references for cve entries that are
		not in English and not normally exported in the nvdcve XML feed.

		NVDTRANS XML Version: 1.0

		Each element in this document is described by xs:annotation tags.

		This file is kept at http://nvd.nist.gov/download/nvdtrans.xsd
		accompanying DTD at http://nvd.nist.gov/download/nvdtrans.dtd
		NVDTRANS XML feeds and further documentation are available at http://nvd.nist.gov/download.cfm
	</xs:documentation>
</xs:annotation>

<xs:element name="nvdtrans">
	<xs:annotation>
		<xs:documentation>
			Root element.  Contains only "entry" child elements.
			Attributes for this element describe the version of the XML feed being read.
			Attributes:
			"nvdtrans_xml_version" (required) => the schema and DTD version number currently supported by this document
			"pub_date" (required) => the date this document was compiled
		</xs:documentation>
	</xs:annotation>
	<xs:complexType>
		<xs:sequence>
			<xs:element name="entry" minOccurs="0" maxOccurs="unbounded">
				<xs:annotation>
					<xs:documentation>
						Documents one CVE entry's non-standard, non-English description and
						references.  The child elements should always appear in the sequence
						defined below.
						Attributes:
						"type" (required) => CVE or CAN
						"name" (required) => full CVE name
						"seq" (required) => sequence number from CVE name
						"nvd_name" => NVD name (if it exists)
						"discovered" => date discovered
						"published" (required) => date published
						"reject" => indicates that this CVE entry has been rejected by CVE or NVD
					</xs:documentation>
				</xs:annotation>
				<xs:complexType>
					<xs:sequence>
						<xs:element name="desc">
							<xs:annotation>
								<xs:documentation>
									Description wrapper tag, parent to any documented translated descriptions of this
									CVE entry.  While the "desc" tag will always be present, there may be no "descript"
									child tags.
								</xs:documentation>
							</xs:annotation>
							<xs:complexType>
								<xs:sequence>
									<xs:element name="descript" minOccurs="0" maxOccurs="unbounded" >
										<xs:annotation>
											<xs:documentation>
												Contains a specific description of this CVE entry
												translated from the source indicated by the "source"
												attribute.
												Attributes:
												"source" (required) => CVE or NVD
												"language" (required) => language to which this description has been translated
												"modified" (required) => date modified
												"translator" (required) => person who created this translation
												"trans_org" => the organization that the person indicated by "translator" represents
												"title" => a translated title of the vulnerability												
											</xs:documentation>
										</xs:annotation>
										<xs:complexType mixed="true">
											<xs:attribute name="source" use="required">
												<xs:simpleType>
													<xs:restriction base="xs:NMTOKEN">
														<xs:enumeration value="cve" />
														<xs:enumeration value="nvd" />
													</xs:restriction>
												</xs:simpleType>
											</xs:attribute>
											<xs:attribute name="language" type="xs:string" use="required" />
											<xs:attribute name="modified" type="dateType" use="required" />
											<xs:attribute name="translator" type="xs:string" use="required" />
											<xs:attribute name="trans_org" type="xs:string" />
											<xs:attribute name="title" type="xs:string" />											
										</xs:complexType>
									</xs:element>
								</xs:sequence>
							</xs:complexType>
						</xs:element>
						<xs:element name="refs">
							<xs:annotation>
								<xs:documentation>
									Reference wrapper tag (always present).  Non-standard, non-english external references to this
									CVE entry are contained within this tag.
								</xs:documentation>
							</xs:annotation>
							<xs:complexType>
								<xs:sequence>
									<xs:element name="ref" minOccurs="0" maxOccurs="unbounded">
										<xs:annotation>
											<xs:documentation>
												Individual reference to this CVE entry.  Text is the name of this vulnerability
												at this particular reference.
												Attributes:
												"source" => Name of reference source
												"url" (required) => hyperlink to reference
												"language" (required) => indicates the language of this reference
												"trans_org" => the organization of the person who provided the reference in NVD												
											</xs:documentation>
										</xs:annotation>
										<xs:complexType mixed="true">
											<xs:attribute name="source" type="xs:string" />
											<xs:attribute name="url" type="urlType" use="required" />
											<xs:attribute name="language" type="xs:string" use="required" />
											<xs:attribute name="trans_org" type="xs:string" />											
										</xs:complexType>
									</xs:element>
								</xs:sequence>
							</xs:complexType>
						</xs:element>
					</xs:sequence>
					<xs:attribute name="type" use="required">
						<xs:simpleType>
							<xs:restriction base="xs:NMTOKEN">
								<xs:enumeration value="CAN" />
								<xs:enumeration value="CVE" />
							</xs:restriction>
						</xs:simpleType>
					</xs:attribute>
					<xs:attribute name="name" use="required">
						<xs:simpleType>
							<xs:restriction base="xs:ID">
								<xs:pattern value="(CAN|CVE)\-\d\d\d\d\-\d\d\d\d" />
							</xs:restriction>
						</xs:simpleType>
					</xs:attribute>
					<xs:attribute name="seq" use="required">
						<xs:simpleType>
							<xs:restriction base="xs:NMTOKEN">
								<xs:pattern value="\d\d\d\d\-\d\d\d\d" />
							</xs:restriction>
						</xs:simpleType>
					</xs:attribute>
					<xs:attribute name="nvd_name" type="xs:string" />
					<xs:attribute name="discovered" type="dateType" />
					<xs:attribute name="published" type="dateType" use="required" />
					<xs:attribute name="reject" type="trueOnlyAttribute" />
				</xs:complexType>
			</xs:element>
		</xs:sequence>
		<xs:attribute name="nvdtrans_xml_version" type="xs:NMTOKEN" use="required" />
		<xs:attribute name="pub_date" type="dateType" use="required" />
	</xs:complexType>
</xs:element>

<xs:simpleType name="dateType">
	<xs:annotation>
		<xs:documentation>
			Defines date format for NVD.  Dates follow the mask "yyyy-mm-dd"
		</xs:documentation>
	</xs:annotation>
	<xs:restriction base="xs:date">
		<xs:pattern value="(19|20)\d\d-((01|03|05|07|08|10|12)-(0[1-9]|[1-2]\d|3[01])|(04|06|09|11)-(0[1-9]|[1-2]\d|30)|02-(0[1-9]|1\d|2\d))" />
	</xs:restriction>
</xs:simpleType>

<xs:simpleType name="urlType">
	<xs:annotation>
		<xs:documentation>
			Restricts urls in NVD beyond the xs:anyURI restrictions.
		</xs:documentation>
	</xs:annotation>
	<xs:restriction base="xs:anyURI">
		<xs:whiteSpace value="collapse" />
		<xs:pattern value="(news|(ht|f)tp(s)?)://([^:]|:[^/]|:/[^/])+(:|:/)?" />
	</xs:restriction>
</xs:simpleType>

<xs:simpleType name="trueOnlyAttribute">
	<xs:annotation>
		<xs:documentation>
			simpleType used for attributes that are only present when they are true.
			Such attributes appear only in the form attribute_name="1".
		</xs:documentation>
	</xs:annotation>
	<xs:restriction base="xs:NMTOKEN">
		<xs:enumeration value="1" />
	</xs:restriction>
</xs:simpleType>

</xs:schema>