mirror of
https://github.com/google/nomulus.git
synced 2025-06-27 14:54:51 +02:00
mv com/google/domain/registry google/registry
This change renames directories in preparation for the great package rename. The repository is now in a broken state because the code itself hasn't been updated. However this should ensure that git correctly preserves history for each file.
This commit is contained in:
parent
a41677aea1
commit
5012893c1d
2396 changed files with 0 additions and 0 deletions
22
java/google/registry/xml/BUILD
Normal file
22
java/google/registry/xml/BUILD
Normal file
|
@ -0,0 +1,22 @@
|
|||
package(
|
||||
default_visibility = ["//java/com/google/domain/registry:registry_project"],
|
||||
)
|
||||
|
||||
|
||||
filegroup(
|
||||
name = "xml_schema_files",
|
||||
srcs = glob(["xsd/*.xsd"]),
|
||||
)
|
||||
|
||||
java_library(
|
||||
name = "xml",
|
||||
srcs = glob(["*.java"]),
|
||||
resources = [":xml_schema_files"],
|
||||
deps = [
|
||||
"//java/com/google/common/base",
|
||||
"//java/com/google/common/collect",
|
||||
"//java/com/google/common/io",
|
||||
"//third_party/java/joda_time",
|
||||
"//third_party/java/jsr305_annotations",
|
||||
],
|
||||
)
|
69
java/google/registry/xml/DateAdapter.java
Normal file
69
java/google/registry/xml/DateAdapter.java
Normal file
|
@ -0,0 +1,69 @@
|
|||
// Copyright 2016 The Domain Registry Authors. All Rights Reserved.
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
|
||||
package com.google.domain.registry.xml;
|
||||
|
||||
import static com.google.common.base.Strings.isNullOrEmpty;
|
||||
import static org.joda.time.DateTimeZone.UTC;
|
||||
|
||||
import org.joda.time.LocalDate;
|
||||
import org.joda.time.format.DateTimeFormatter;
|
||||
import org.joda.time.format.ISODateTimeFormat;
|
||||
|
||||
import javax.annotation.CheckForNull;
|
||||
import javax.annotation.Nullable;
|
||||
import javax.xml.bind.annotation.adapters.XmlAdapter;
|
||||
|
||||
/**
|
||||
* Adapter to use Joda {@link LocalDate} when marshalling the XML Schema {@code date} type.
|
||||
*
|
||||
* <p>Dates are represented as midnight in UTC. The parser aims to be permissive in what it accepts.
|
||||
* Timestamps are converted to UTC if a zone is specified and then the time section is truncated.
|
||||
* This can lead to unexpected behavior, but it will be your fault.
|
||||
*/
|
||||
public class DateAdapter extends XmlAdapter<String, LocalDate> {
|
||||
|
||||
/** @see ISODateTimeFormat#date */
|
||||
private static final DateTimeFormatter MARSHAL_FORMAT = ISODateTimeFormat.date();
|
||||
|
||||
/** @see ISODateTimeFormat#dateTimeParser */
|
||||
private static final DateTimeFormatter UNMARSHAL_FORMAT = ISODateTimeFormat.dateTimeParser();
|
||||
|
||||
/**
|
||||
* Parses an ISO timestamp string into a UTC {@link LocalDate} object, converting timezones
|
||||
* and truncating time to midnight if necessary. If {@code timestamp} is empty or {@code null}
|
||||
* then {@code null} is returned.
|
||||
*/
|
||||
@Nullable
|
||||
@CheckForNull
|
||||
@Override
|
||||
public LocalDate unmarshal(@Nullable String timestamp) {
|
||||
if (isNullOrEmpty(timestamp)) {
|
||||
return null;
|
||||
}
|
||||
return UNMARSHAL_FORMAT.parseDateTime(timestamp).withZone(UTC).toLocalDate();
|
||||
}
|
||||
|
||||
/**
|
||||
* Converts {@link LocalDate} to UTC and returns it as an RFC3339 string. If {@code timestamp}
|
||||
* is {@code null} then an empty string is returned.
|
||||
*/
|
||||
@Override
|
||||
public String marshal(@Nullable LocalDate date) {
|
||||
if (date == null) {
|
||||
return "";
|
||||
}
|
||||
return MARSHAL_FORMAT.print(date.toDateTimeAtStartOfDay(UTC));
|
||||
}
|
||||
}
|
38
java/google/registry/xml/PeriodAdapter.java
Normal file
38
java/google/registry/xml/PeriodAdapter.java
Normal file
|
@ -0,0 +1,38 @@
|
|||
// Copyright 2016 The Domain Registry Authors. All Rights Reserved.
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
|
||||
package com.google.domain.registry.xml;
|
||||
|
||||
import static com.google.common.base.Strings.isNullOrEmpty;
|
||||
|
||||
import org.joda.time.Period;
|
||||
|
||||
import javax.annotation.Nullable;
|
||||
import javax.xml.bind.annotation.adapters.XmlAdapter;
|
||||
|
||||
/** Adapter to use Joda {@link Period} when marshalling XML. */
|
||||
public class PeriodAdapter extends XmlAdapter<String, Period> {
|
||||
|
||||
@Nullable
|
||||
@Override
|
||||
public Period unmarshal(@Nullable String periodString) {
|
||||
return isNullOrEmpty(periodString) ? null : Period.parse(periodString);
|
||||
}
|
||||
|
||||
@Nullable
|
||||
@Override
|
||||
public String marshal(@Nullable Period period) {
|
||||
return period == null ? null : period.toString();
|
||||
}
|
||||
}
|
72
java/google/registry/xml/UtcDateTimeAdapter.java
Normal file
72
java/google/registry/xml/UtcDateTimeAdapter.java
Normal file
|
@ -0,0 +1,72 @@
|
|||
// Copyright 2016 The Domain Registry Authors. All Rights Reserved.
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
|
||||
package com.google.domain.registry.xml;
|
||||
|
||||
import static com.google.common.base.Strings.isNullOrEmpty;
|
||||
import static org.joda.time.DateTimeZone.UTC;
|
||||
|
||||
import org.joda.time.DateTime;
|
||||
import org.joda.time.format.DateTimeFormatter;
|
||||
import org.joda.time.format.ISODateTimeFormat;
|
||||
|
||||
import javax.annotation.CheckForNull;
|
||||
import javax.annotation.Nullable;
|
||||
import javax.xml.bind.annotation.adapters.XmlAdapter;
|
||||
|
||||
/**
|
||||
* Adapter to use Joda {@link DateTime} when marshalling XML timestamps.
|
||||
*
|
||||
* <p>These fields shall contain timestamps indicating the date and time in UTC as specified in
|
||||
* RFC3339, with no offset from the zero meridian. For example: {@code 2010-10-17T00:00:00Z}.
|
||||
*/
|
||||
public class UtcDateTimeAdapter extends XmlAdapter<String, DateTime> {
|
||||
|
||||
/** @see ISODateTimeFormat#dateTimeNoMillis */
|
||||
private static final DateTimeFormatter MARSHAL_FORMAT = ISODateTimeFormat.dateTimeNoMillis();
|
||||
|
||||
/** @see ISODateTimeFormat#dateTimeParser */
|
||||
private static final DateTimeFormatter UNMARSHAL_FORMAT = ISODateTimeFormat.dateTimeParser();
|
||||
|
||||
/** Same as {@link #marshal(DateTime)}, but in a convenient static format. */
|
||||
public static String getFormattedString(@Nullable DateTime timestamp) {
|
||||
if (timestamp == null) {
|
||||
return "";
|
||||
}
|
||||
return MARSHAL_FORMAT.print(timestamp.toDateTime(UTC));
|
||||
}
|
||||
|
||||
/**
|
||||
* Parses an ISO timestamp string into a UTC {@link DateTime} object, converting timezones if
|
||||
* necessary. If {@code timestamp} is empty or {@code null} then {@code null} is returned.
|
||||
*/
|
||||
@Nullable
|
||||
@CheckForNull
|
||||
@Override
|
||||
public DateTime unmarshal(@Nullable String timestamp) {
|
||||
if (isNullOrEmpty(timestamp)) {
|
||||
return null;
|
||||
}
|
||||
return UNMARSHAL_FORMAT.parseDateTime(timestamp).withZone(UTC);
|
||||
}
|
||||
|
||||
/**
|
||||
* Converts {@link DateTime} to UTC and returns it as an RFC3339 string. If {@code timestamp} is
|
||||
* {@code null} then an empty string is returned.
|
||||
*/
|
||||
@Override
|
||||
public String marshal(@Nullable DateTime timestamp) {
|
||||
return getFormattedString(timestamp);
|
||||
}
|
||||
}
|
24
java/google/registry/xml/ValidationMode.java
Normal file
24
java/google/registry/xml/ValidationMode.java
Normal file
|
@ -0,0 +1,24 @@
|
|||
// Copyright 2016 The Domain Registry Authors. All Rights Reserved.
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
|
||||
package com.google.domain.registry.xml;
|
||||
|
||||
/** Enum that determines whether xml should be validated against a schema while marshaling. */
|
||||
public enum ValidationMode {
|
||||
/** Validate. */
|
||||
STRICT,
|
||||
|
||||
/** Don't validate. */
|
||||
LENIENT
|
||||
}
|
31
java/google/registry/xml/XmlException.java
Normal file
31
java/google/registry/xml/XmlException.java
Normal file
|
@ -0,0 +1,31 @@
|
|||
// Copyright 2016 The Domain Registry Authors. All Rights Reserved.
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
|
||||
package com.google.domain.registry.xml;
|
||||
|
||||
/**
|
||||
* An exception thrown by {@link XmlTransformer} when marshalling or unmarshalling fails.
|
||||
*
|
||||
* <p>Upstream errors such as {@link javax.xml.bind.JAXBException} will be wrapped by this class.
|
||||
*/
|
||||
public class XmlException extends Exception {
|
||||
|
||||
public XmlException(String message) {
|
||||
super(message);
|
||||
}
|
||||
|
||||
public XmlException(Throwable cause) {
|
||||
super(cause);
|
||||
}
|
||||
}
|
88
java/google/registry/xml/XmlFragmentMarshaller.java
Normal file
88
java/google/registry/xml/XmlFragmentMarshaller.java
Normal file
|
@ -0,0 +1,88 @@
|
|||
// Copyright 2016 The Domain Registry Authors. All Rights Reserved.
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
|
||||
package com.google.domain.registry.xml;
|
||||
|
||||
import static com.google.common.base.Throwables.propagateIfInstanceOf;
|
||||
import static com.google.common.base.Verify.verify;
|
||||
import static java.nio.charset.StandardCharsets.UTF_8;
|
||||
|
||||
import java.io.ByteArrayOutputStream;
|
||||
import java.util.regex.Pattern;
|
||||
|
||||
import javax.annotation.concurrent.NotThreadSafe;
|
||||
import javax.xml.bind.JAXBContext;
|
||||
import javax.xml.bind.JAXBElement;
|
||||
import javax.xml.bind.JAXBException;
|
||||
import javax.xml.bind.MarshalException;
|
||||
import javax.xml.bind.Marshaller;
|
||||
import javax.xml.validation.Schema;
|
||||
|
||||
/** JAXB marshaller for building pieces of XML documents in a single thread. */
|
||||
@NotThreadSafe
|
||||
public final class XmlFragmentMarshaller {
|
||||
|
||||
private static final Pattern XMLNS_PATTERN = Pattern.compile(" xmlns:\\w+=\"[^\"]+\"");
|
||||
|
||||
private final ByteArrayOutputStream os = new ByteArrayOutputStream();
|
||||
private final Marshaller marshaller;
|
||||
private final Schema schema;
|
||||
|
||||
XmlFragmentMarshaller(JAXBContext jaxbContext, Schema schema) {
|
||||
try {
|
||||
marshaller = jaxbContext.createMarshaller();
|
||||
marshaller.setProperty(Marshaller.JAXB_ENCODING, UTF_8.toString());
|
||||
marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
|
||||
marshaller.setProperty(Marshaller.JAXB_FRAGMENT, true);
|
||||
} catch (JAXBException e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
this.schema = schema;
|
||||
}
|
||||
|
||||
/**
|
||||
* Turns an individual JAXB element into an XML fragment string.
|
||||
*
|
||||
* @throws MarshalException if schema validation failed
|
||||
*/
|
||||
public String marshal(JAXBElement<?> element) throws MarshalException {
|
||||
return internalMarshal(element, true);
|
||||
}
|
||||
|
||||
/** Turns an individual JAXB element into an XML fragment string. */
|
||||
public String marshalLenient(JAXBElement<?> element) {
|
||||
try {
|
||||
return internalMarshal(element, false);
|
||||
} catch (MarshalException e) {
|
||||
throw new RuntimeException("MarshalException shouldn't be thrown in lenient mode", e);
|
||||
}
|
||||
}
|
||||
|
||||
private String internalMarshal(JAXBElement<?> element, boolean strict) throws MarshalException {
|
||||
os.reset();
|
||||
marshaller.setSchema(strict ? schema : null);
|
||||
try {
|
||||
marshaller.marshal(element, os);
|
||||
} catch (JAXBException e) {
|
||||
propagateIfInstanceOf(e, MarshalException.class);
|
||||
throw new RuntimeException("Mysterious XML exception", e);
|
||||
}
|
||||
String fragment = new String(os.toByteArray(), UTF_8);
|
||||
int endOfFirstLine = fragment.indexOf(">\n");
|
||||
verify(endOfFirstLine > 0, "Bad XML fragment:\n%s", fragment);
|
||||
String firstLine = fragment.substring(0, endOfFirstLine + 2);
|
||||
String rest = fragment.substring(firstLine.length());
|
||||
return XMLNS_PATTERN.matcher(firstLine).replaceAll("") + rest;
|
||||
}
|
||||
}
|
325
java/google/registry/xml/XmlTransformer.java
Normal file
325
java/google/registry/xml/XmlTransformer.java
Normal file
|
@ -0,0 +1,325 @@
|
|||
// Copyright 2016 The Domain Registry Authors. All Rights Reserved.
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
|
||||
package com.google.domain.registry.xml;
|
||||
|
||||
import static com.google.common.base.Preconditions.checkNotNull;
|
||||
import static com.google.common.base.Strings.nullToEmpty;
|
||||
import static com.google.domain.registry.xml.ValidationMode.STRICT;
|
||||
import static java.nio.charset.StandardCharsets.UTF_8;
|
||||
|
||||
import com.google.common.base.Joiner;
|
||||
import com.google.common.collect.ImmutableList;
|
||||
import com.google.common.collect.ImmutableMap;
|
||||
import com.google.common.io.Closer;
|
||||
import com.google.common.io.Resources;
|
||||
|
||||
import org.xml.sax.SAXException;
|
||||
import org.xml.sax.SAXParseException;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.io.OutputStream;
|
||||
import java.io.StringReader;
|
||||
import java.io.StringWriter;
|
||||
import java.io.Writer;
|
||||
import java.nio.charset.Charset;
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import javax.annotation.Nullable;
|
||||
import javax.xml.XMLConstants;
|
||||
import javax.xml.bind.JAXBContext;
|
||||
import javax.xml.bind.JAXBException;
|
||||
import javax.xml.bind.Marshaller;
|
||||
import javax.xml.bind.UnmarshalException;
|
||||
import javax.xml.bind.Unmarshaller;
|
||||
import javax.xml.bind.helpers.DefaultValidationEventHandler;
|
||||
import javax.xml.stream.FactoryConfigurationError;
|
||||
import javax.xml.stream.XMLInputFactory;
|
||||
import javax.xml.stream.XMLStreamException;
|
||||
import javax.xml.transform.OutputKeys;
|
||||
import javax.xml.transform.Result;
|
||||
import javax.xml.transform.Transformer;
|
||||
import javax.xml.transform.TransformerException;
|
||||
import javax.xml.transform.TransformerFactory;
|
||||
import javax.xml.transform.stream.StreamResult;
|
||||
import javax.xml.transform.stream.StreamSource;
|
||||
import javax.xml.validation.Schema;
|
||||
import javax.xml.validation.SchemaFactory;
|
||||
|
||||
/** Static methods for marshaling, unmarshaling, and validating XML. */
|
||||
public class XmlTransformer {
|
||||
|
||||
/** Default for {@link StreamSource#setSystemId(String)} so error reporting works. */
|
||||
private static final String SYSTEM_ID = "<default system id>";
|
||||
|
||||
/** A transformer factory for the {@link #prettyPrint} method. */
|
||||
private static final TransformerFactory transformerFactory = TransformerFactory.newInstance();
|
||||
|
||||
/** A {@link JAXBContext} (thread-safe) to use for marshaling and unmarshaling. */
|
||||
private final JAXBContext jaxbContext;
|
||||
|
||||
/** A factory for setting flags to disable XXE attacks. */
|
||||
private static final XMLInputFactory XML_INPUT_FACTORY = createInputFactory();
|
||||
|
||||
/** A {@link Schema} to validate XML. */
|
||||
private final Schema schema;
|
||||
|
||||
/**
|
||||
* Create a new XmlTransformer that validates using the given schemas, but uses the given classes
|
||||
* (rather than generated ones) for marshaling and unmarshaling.
|
||||
*
|
||||
* @param schemaFilenames schema files, used only for validating, and relative to this package.
|
||||
* @param recognizedClasses the classes that can be used to marshal to and from
|
||||
*/
|
||||
public XmlTransformer(List<String> schemaFilenames, Class<?>... recognizedClasses) {
|
||||
try {
|
||||
this.jaxbContext = JAXBContext.newInstance(recognizedClasses);
|
||||
this.schema = loadXmlSchemas(schemaFilenames);
|
||||
} catch (JAXBException e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Create a new XmlTransformer that validates using the given schemas and marshals to and from
|
||||
* classes generated off of those schemas.
|
||||
*
|
||||
* @param schemaNamesToFilenames map of schema names to filenames, immutable because ordering is
|
||||
* significant and ImmutableMap preserves insertion order. The filenames are relative to
|
||||
* this package.
|
||||
*/
|
||||
public XmlTransformer(Package pakkage, ImmutableMap<String, String> schemaNamesToFilenames) {
|
||||
try {
|
||||
this.jaxbContext = initJaxbContext(pakkage, schemaNamesToFilenames.keySet());
|
||||
this.schema = loadXmlSchemas(ImmutableList.copyOf(schemaNamesToFilenames.values()));
|
||||
} catch (JAXBException e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
}
|
||||
|
||||
private static XMLInputFactory createInputFactory() throws FactoryConfigurationError {
|
||||
// Prevent XXE attacks.
|
||||
XMLInputFactory xmlInputFactory = XMLInputFactory.newFactory();
|
||||
xmlInputFactory.setProperty(XMLInputFactory.IS_SUPPORTING_EXTERNAL_ENTITIES, false);
|
||||
xmlInputFactory.setProperty(XMLInputFactory.SUPPORT_DTD, false);
|
||||
return xmlInputFactory;
|
||||
}
|
||||
|
||||
/**
|
||||
* Validates XML text against {@link #schema} without marshalling.
|
||||
* <p>
|
||||
* You must specify the XML class you expect to receive as the root element.
|
||||
* Validation is performed in accordance with the hard-coded XML schemas.
|
||||
*
|
||||
* @throws XmlException if XML input was invalid or root element doesn't match {@code expect}.
|
||||
*/
|
||||
public void validate(String xml) throws XmlException {
|
||||
try {
|
||||
schema.newValidator().validate(new StreamSource(new StringReader(xml)));
|
||||
} catch (SAXException | IOException e) {
|
||||
throw new XmlException(e);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Turns XML text into an object, validating against {@link #schema}.
|
||||
* <p>
|
||||
* You must specify the XML class you expect to receive as the root element. Validation is
|
||||
* performed in accordance with the hard-coded XML schemas.
|
||||
*
|
||||
* @throws XmlException if failed to read from {@code bytes}, XML input is invalid, or root
|
||||
* element doesn't match {@code expect}.
|
||||
* @see com.google.common.io.Files#asByteSource
|
||||
* @see com.google.common.io.Resources#asByteSource
|
||||
*/
|
||||
@SuppressWarnings("unchecked")
|
||||
public <T> T unmarshal(InputStream stream) throws XmlException {
|
||||
try (InputStream autoClosingStream = stream) {
|
||||
return (T) getUnmarshaller().unmarshal(
|
||||
XML_INPUT_FACTORY.createXMLStreamReader(new StreamSource(autoClosingStream, SYSTEM_ID)));
|
||||
} catch (UnmarshalException e) {
|
||||
// Plain old parsing exceptions have a SAXParseException with no further cause.
|
||||
if (e.getLinkedException() instanceof SAXParseException
|
||||
&& e.getLinkedException().getCause() == null) {
|
||||
SAXParseException sae = (SAXParseException) e.getLinkedException();
|
||||
throw new XmlException(String.format(
|
||||
"Syntax error at line %d, column %d: %s",
|
||||
sae.getLineNumber(),
|
||||
sae.getColumnNumber(),
|
||||
nullToEmpty(sae.getMessage()).replaceAll(""", "")));
|
||||
}
|
||||
// These get thrown for attempted XXE attacks.
|
||||
if (e.getLinkedException() instanceof XMLStreamException) {
|
||||
XMLStreamException xse = (XMLStreamException) e.getLinkedException();
|
||||
throw new XmlException(String.format(
|
||||
"Syntax error at line %d, column %d: %s",
|
||||
xse.getLocation().getLineNumber(),
|
||||
xse.getLocation().getColumnNumber(),
|
||||
nullToEmpty(xse.getMessage())
|
||||
.replaceAll("^.*\nMessage: ", "") // Strip an ugly prefix from XMLStreamException.
|
||||
.replaceAll(""", "")));
|
||||
}
|
||||
throw new XmlException(e);
|
||||
} catch (JAXBException | XMLStreamException | IOException e) {
|
||||
throw new XmlException(e);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Streams {@code root} without XML declaration, optionally validating against the schema.
|
||||
* <p>
|
||||
* The root object must be annotated with {@link javax.xml.bind.annotation.XmlRootElement}. If the
|
||||
* validation parameter is set to {@link ValidationMode#STRICT} this method will verify that your
|
||||
* object strictly conforms to {@link #schema}. Because the output is streamed,
|
||||
* {@link XmlException} will most likely be thrown <i>after</i> output has been written.
|
||||
*
|
||||
* @param root the object to write
|
||||
* @param writer to write the output to
|
||||
* @param validation whether to validate while marshaling
|
||||
* @throws XmlException to rethrow {@link JAXBException}.
|
||||
*/
|
||||
public void marshal(Object root, Writer writer, ValidationMode validation) throws XmlException {
|
||||
try {
|
||||
// Omit XML declaration because character-oriented output prevents us from knowing.
|
||||
getMarshaller(
|
||||
STRICT.equals(validation) ? schema : null,
|
||||
ImmutableMap.of(Marshaller.JAXB_FRAGMENT, true)).marshal(
|
||||
checkNotNull(root, "root"), checkNotNull(writer, "writer"));
|
||||
} catch (JAXBException e) {
|
||||
throw new XmlException(e);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Validates and streams {@code root} as formatted XML bytes with XML declaration.
|
||||
* <p>
|
||||
* The root object must be annotated with {@link javax.xml.bind.annotation.XmlRootElement}. If the
|
||||
* validation parameter is set to {@link ValidationMode#STRICT} this method will verify that your
|
||||
* object strictly conforms to {@link #schema}. Because the output is streamed,
|
||||
* {@link XmlException} will most likely be thrown <i>after</i> output has been written.
|
||||
*
|
||||
* @param root the object to write
|
||||
* @param out byte-oriented output for writing XML. This method won't close it.
|
||||
* @param charset should almost always be set to {@code "utf-8"}.
|
||||
* @param validation whether to validate while marshaling
|
||||
* @throws XmlException to rethrow {@link JAXBException}.
|
||||
* @see #unmarshal
|
||||
*/
|
||||
public void marshal(Object root, OutputStream out, Charset charset, ValidationMode validation)
|
||||
throws XmlException {
|
||||
try {
|
||||
getMarshaller(
|
||||
STRICT.equals(validation) ? schema : null,
|
||||
ImmutableMap.of(Marshaller.JAXB_ENCODING, charset.toString())).marshal(
|
||||
checkNotNull(root, "root"), checkNotNull(out, "out"));
|
||||
} catch (JAXBException e) {
|
||||
throw new XmlException(e);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Validates and streams {@code root} as characters, always using strict validation.
|
||||
* <p>
|
||||
* The root object must be annotated with {@link javax.xml.bind.annotation.XmlRootElement}. This
|
||||
* method will verify that your object strictly conforms to {@link #schema}. Because the output is
|
||||
* streamed, {@link XmlException} will most likely be thrown <i>after</i> output has been
|
||||
* written.
|
||||
*
|
||||
* @param root the object to write
|
||||
* @param result to write the output to
|
||||
* @throws XmlException to rethrow {@link JAXBException}.
|
||||
*/
|
||||
public void marshalStrict(Object root, Result result) throws XmlException {
|
||||
try {
|
||||
getMarshaller(schema, ImmutableMap.<String, Object>of())
|
||||
.marshal(checkNotNull(root, "root"), checkNotNull(result, "result"));
|
||||
} catch (JAXBException e) {
|
||||
throw new XmlException(e);
|
||||
}
|
||||
}
|
||||
|
||||
/** Returns new instance of {@link XmlFragmentMarshaller}. */
|
||||
public XmlFragmentMarshaller createFragmentMarshaller() {
|
||||
return new XmlFragmentMarshaller(jaxbContext, schema);
|
||||
}
|
||||
|
||||
/** Creates a single {@link Schema} from multiple {@code .xsd} files. */
|
||||
public static Schema loadXmlSchemas(List<String> schemaFilenames) {
|
||||
try (Closer closer = Closer.create()) {
|
||||
StreamSource[] sources = new StreamSource[schemaFilenames.size()];
|
||||
for (int i = 0; i < schemaFilenames.size(); ++i) {
|
||||
sources[i] = new StreamSource(closer.register(
|
||||
Resources.asByteSource(Resources.getResource(
|
||||
XmlTransformer.class, "xsd/" + schemaFilenames.get(i))).openStream()));
|
||||
}
|
||||
return SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI).newSchema(sources);
|
||||
} catch (IOException | SAXException e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
}
|
||||
|
||||
/** Creates a {@link JAXBContext} from multiple schema names. */
|
||||
private static JAXBContext initJaxbContext(
|
||||
Package pakkage, Collection<String> schemaNames) throws JAXBException {
|
||||
String prefix = pakkage.getName() + ".";
|
||||
return JAXBContext.newInstance(prefix + Joiner.on(':' + prefix).join(schemaNames));
|
||||
}
|
||||
|
||||
/** Get a {@link Unmarshaller} instance with the default configuration. */
|
||||
private Unmarshaller getUnmarshaller() throws JAXBException {
|
||||
Unmarshaller unmarshaller = jaxbContext.createUnmarshaller();
|
||||
unmarshaller.setSchema(schema);
|
||||
// This handler was the default in JAXB 1.0. It fails on any exception thrown while
|
||||
// unmarshalling. In JAXB 2.0 some errors are considered recoverable and are ignored, which is
|
||||
// not what we want, so we have to set this explicitly.
|
||||
unmarshaller.setEventHandler(new DefaultValidationEventHandler());
|
||||
return unmarshaller;
|
||||
}
|
||||
|
||||
/** Get a {@link Marshaller} instance with the given configuration. */
|
||||
private Marshaller getMarshaller(@Nullable Schema schemaParam, Map<String, ?> properties)
|
||||
throws JAXBException {
|
||||
Marshaller marshaller = jaxbContext.createMarshaller();
|
||||
for (Map.Entry<String, ?> entry : properties.entrySet()) {
|
||||
marshaller.setProperty(entry.getKey(), entry.getValue());
|
||||
}
|
||||
marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
|
||||
marshaller.setSchema(schemaParam);
|
||||
return marshaller;
|
||||
}
|
||||
|
||||
/** Pretty print xml. */
|
||||
public static String prettyPrint(String xmlString) {
|
||||
StringWriter prettyXml = new StringWriter();
|
||||
try {
|
||||
Transformer transformer = transformerFactory.newTransformer();
|
||||
transformer.setOutputProperty(OutputKeys.INDENT, "yes");
|
||||
transformer.setOutputProperty("{http://xml.apache.org/xslt}indent-amount", "2");
|
||||
transformer.transform(
|
||||
new StreamSource(new StringReader(xmlString)),
|
||||
new StreamResult(prettyXml));
|
||||
return prettyXml.toString();
|
||||
} catch (TransformerException e) {
|
||||
return xmlString; // We couldn't prettify it, but that's ok; fail gracefully.
|
||||
}
|
||||
}
|
||||
|
||||
/** Pretty print xml bytes. */
|
||||
public static String prettyPrint(byte[] xmlBytes) {
|
||||
return prettyPrint(new String(xmlBytes, UTF_8));
|
||||
}
|
||||
}
|
16
java/google/registry/xml/package-info.java
Normal file
16
java/google/registry/xml/package-info.java
Normal file
|
@ -0,0 +1,16 @@
|
|||
// Copyright 2016 The Domain Registry Authors. All Rights Reserved.
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
|
||||
@javax.annotation.ParametersAreNonnullByDefault
|
||||
package com.google.domain.registry.xml;
|
39
java/google/registry/xml/xsd/allocate.xsd
Normal file
39
java/google/registry/xml/xsd/allocate.xsd
Normal file
|
@ -0,0 +1,39 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<schema targetNamespace="urn:google:params:xml:ns:allocate-1.0"
|
||||
xmlns:allocate="urn:google:params:xml:ns:allocate-1.0"
|
||||
xmlns:eppcom="urn:ietf:params:xml:ns:eppcom-1.0"
|
||||
xmlns:mark="urn:ietf:params:xml:ns:mark-1.0"
|
||||
xmlns:launch="urn:ietf:params:xml:ns:launch-1.0"
|
||||
xmlns="http://www.w3.org/2001/XMLSchema"
|
||||
elementFormDefault="qualified">
|
||||
|
||||
<!-- Import common element types. -->
|
||||
<import namespace="urn:ietf:params:xml:ns:eppcom-1.0" schemaLocation="eppcom.xsd" />
|
||||
|
||||
<import namespace="urn:ietf:params:xml:ns:mark-1.0" schemaLocation="mark.xsd" />
|
||||
|
||||
<import namespace="urn:ietf:params:xml:ns:launch-1.0" schemaLocation="launch.xsd" />
|
||||
|
||||
<annotation>
|
||||
<documentation>
|
||||
Extensible Provisioning Protocol v1.0
|
||||
domain name extension schema for allocating domains from applications.
|
||||
This is a proprietary, internal-only, non-public extension only for use
|
||||
inside the Google registry.
|
||||
</documentation>
|
||||
</annotation>
|
||||
|
||||
<!-- Child elements found in EPP commands. -->
|
||||
<element name="create" type="allocate:createType" />
|
||||
|
||||
<!-- Child elements for the create command -->
|
||||
<complexType name="createType">
|
||||
<sequence>
|
||||
<element name="applicationRoid" type="eppcom:roidType" />
|
||||
<element name="applicationTime" type="dateTime" />
|
||||
<element name="smdId" minOccurs="0" type="mark:idType" />
|
||||
<element name="notice" minOccurs="0" type="launch:createNoticeType" />
|
||||
</sequence>
|
||||
</complexType>
|
||||
|
||||
</schema>
|
389
java/google/registry/xml/xsd/contact.xsd
Normal file
389
java/google/registry/xml/xsd/contact.xsd
Normal file
|
@ -0,0 +1,389 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
|
||||
<schema targetNamespace="urn:ietf:params:xml:ns:contact-1.0"
|
||||
xmlns:contact="urn:ietf:params:xml:ns:contact-1.0"
|
||||
xmlns:epp="urn:ietf:params:xml:ns:epp-1.0"
|
||||
xmlns:eppcom="urn:ietf:params:xml:ns:eppcom-1.0"
|
||||
xmlns="http://www.w3.org/2001/XMLSchema"
|
||||
elementFormDefault="qualified">
|
||||
|
||||
<!--
|
||||
Import common element types.
|
||||
-->
|
||||
<import namespace="urn:ietf:params:xml:ns:eppcom-1.0"
|
||||
schemaLocation="eppcom.xsd"/>
|
||||
<import namespace="urn:ietf:params:xml:ns:epp-1.0"
|
||||
schemaLocation="epp.xsd"/>
|
||||
|
||||
<annotation>
|
||||
<documentation>
|
||||
Extensible Provisioning Protocol v1.0
|
||||
contact provisioning schema.
|
||||
</documentation>
|
||||
</annotation>
|
||||
|
||||
<!--
|
||||
Child elements found in EPP commands.
|
||||
-->
|
||||
<element name="check" type="contact:mIDType"/>
|
||||
<element name="create" type="contact:createType"/>
|
||||
<element name="delete" type="contact:sIDType"/>
|
||||
<element name="info" type="contact:authIDType"/>
|
||||
<element name="transfer" type="contact:authIDType"/>
|
||||
<element name="update" type="contact:updateType"/>
|
||||
|
||||
<!--
|
||||
Utility types.
|
||||
-->
|
||||
<simpleType name="ccType">
|
||||
<restriction base="token">
|
||||
<length value="2"/>
|
||||
</restriction>
|
||||
</simpleType>
|
||||
<complexType name="e164Type">
|
||||
<simpleContent>
|
||||
<extension base="contact:e164StringType">
|
||||
<attribute name="x" type="token"/>
|
||||
</extension>
|
||||
</simpleContent>
|
||||
</complexType>
|
||||
|
||||
<simpleType name="e164StringType">
|
||||
<restriction base="token">
|
||||
<pattern value="(\+[0-9]{1,3}\.[0-9]{1,14})?"/>
|
||||
<maxLength value="17"/>
|
||||
</restriction>
|
||||
</simpleType>
|
||||
|
||||
<simpleType name="pcType">
|
||||
<restriction base="token">
|
||||
<maxLength value="16"/>
|
||||
</restriction>
|
||||
</simpleType>
|
||||
|
||||
<simpleType name="postalLineType">
|
||||
<restriction base="normalizedString">
|
||||
<minLength value="1"/>
|
||||
<maxLength value="255"/>
|
||||
</restriction>
|
||||
</simpleType>
|
||||
|
||||
<simpleType name="optPostalLineType">
|
||||
<restriction base="normalizedString">
|
||||
<maxLength value="255"/>
|
||||
</restriction>
|
||||
</simpleType>
|
||||
|
||||
<!--
|
||||
Child elements of the <create> command.
|
||||
-->
|
||||
<complexType name="createType">
|
||||
<sequence>
|
||||
<element name="id" type="eppcom:clIDType"/>
|
||||
<element name="postalInfo" type="contact:postalInfoType"
|
||||
maxOccurs="2"/>
|
||||
<element name="voice" type="contact:e164Type"
|
||||
minOccurs="0"/>
|
||||
<element name="fax" type="contact:e164Type"
|
||||
minOccurs="0"/>
|
||||
<element name="email" type="eppcom:minTokenType"/>
|
||||
<element name="authInfo" type="contact:authInfoType"/>
|
||||
<element name="disclose" type="contact:discloseType"
|
||||
minOccurs="0"/>
|
||||
</sequence>
|
||||
</complexType>
|
||||
|
||||
<complexType name="postalInfoType">
|
||||
<sequence>
|
||||
<element name="name" type="contact:postalLineType"/>
|
||||
<element name="org" type="contact:optPostalLineType"
|
||||
minOccurs="0"/>
|
||||
<element name="addr" type="contact:addrType"/>
|
||||
</sequence>
|
||||
<attribute name="type" type="contact:postalInfoEnumType"
|
||||
use="required"/>
|
||||
</complexType>
|
||||
|
||||
<simpleType name="postalInfoEnumType">
|
||||
<restriction base="token">
|
||||
<enumeration value="loc"/>
|
||||
<enumeration value="int"/>
|
||||
</restriction>
|
||||
</simpleType>
|
||||
|
||||
<complexType name="addrType">
|
||||
<sequence>
|
||||
<element name="street" type="contact:optPostalLineType"
|
||||
minOccurs="0" maxOccurs="3"/>
|
||||
<element name="city" type="contact:postalLineType"/>
|
||||
<element name="sp" type="contact:optPostalLineType"
|
||||
minOccurs="0"/>
|
||||
<element name="pc" type="contact:pcType"
|
||||
minOccurs="0"/>
|
||||
<element name="cc" type="contact:ccType"/>
|
||||
</sequence>
|
||||
</complexType>
|
||||
|
||||
<complexType name="authInfoType">
|
||||
<choice>
|
||||
<element name="pw" type="eppcom:pwAuthInfoType"/>
|
||||
<element name="ext" type="eppcom:extAuthInfoType"/>
|
||||
</choice>
|
||||
</complexType>
|
||||
|
||||
<complexType name="discloseType">
|
||||
<sequence>
|
||||
<element name="name" type="contact:intLocType"
|
||||
minOccurs="0" maxOccurs="2"/>
|
||||
<element name="org" type="contact:intLocType"
|
||||
minOccurs="0" maxOccurs="2"/>
|
||||
<element name="addr" type="contact:intLocType"
|
||||
minOccurs="0" maxOccurs="2"/>
|
||||
<element name="voice" minOccurs="0"/>
|
||||
<element name="fax" minOccurs="0"/>
|
||||
<element name="email" minOccurs="0"/>
|
||||
</sequence>
|
||||
<attribute name="flag" type="boolean" use="required"/>
|
||||
</complexType>
|
||||
|
||||
<complexType name="intLocType">
|
||||
<attribute name="type" type="contact:postalInfoEnumType"
|
||||
use="required"/>
|
||||
</complexType>
|
||||
|
||||
<!--
|
||||
Child element of commands that require only an identifier.
|
||||
-->
|
||||
<complexType name="sIDType">
|
||||
<sequence>
|
||||
<element name="id" type="eppcom:clIDType"/>
|
||||
</sequence>
|
||||
</complexType>
|
||||
|
||||
<!--
|
||||
Child element of commands that accept multiple identifiers.
|
||||
-->
|
||||
<complexType name="mIDType">
|
||||
<sequence>
|
||||
<element name="id" type="eppcom:clIDType"
|
||||
maxOccurs="unbounded"/>
|
||||
</sequence>
|
||||
</complexType>
|
||||
|
||||
<!--
|
||||
Child elements of the <info> and <transfer> commands.
|
||||
-->
|
||||
<complexType name="authIDType">
|
||||
<sequence>
|
||||
<element name="id" type="eppcom:clIDType"/>
|
||||
<element name="authInfo" type="contact:authInfoType"
|
||||
minOccurs="0"/>
|
||||
</sequence>
|
||||
</complexType>
|
||||
|
||||
<!--
|
||||
Child elements of the <update> command.
|
||||
-->
|
||||
<complexType name="updateType">
|
||||
<sequence>
|
||||
<element name="id" type="eppcom:clIDType"/>
|
||||
<element name="add" type="contact:addRemType"
|
||||
minOccurs="0"/>
|
||||
<element name="rem" type="contact:addRemType"
|
||||
minOccurs="0"/>
|
||||
<element name="chg" type="contact:chgType"
|
||||
minOccurs="0"/>
|
||||
</sequence>
|
||||
</complexType>
|
||||
|
||||
<!--
|
||||
Data elements that can be added or removed.
|
||||
-->
|
||||
<complexType name="addRemType">
|
||||
<sequence>
|
||||
<element name="status" type="contact:statusType"
|
||||
maxOccurs="7"/>
|
||||
</sequence>
|
||||
</complexType>
|
||||
|
||||
<!--
|
||||
Data elements that can be changed.
|
||||
-->
|
||||
<complexType name="chgType">
|
||||
<sequence>
|
||||
<element name="postalInfo" type="contact:chgPostalInfoType"
|
||||
minOccurs="0" maxOccurs="2"/>
|
||||
<element name="voice" type="contact:e164Type"
|
||||
minOccurs="0"/>
|
||||
<element name="fax" type="contact:e164Type"
|
||||
minOccurs="0"/>
|
||||
<element name="email" type="eppcom:minTokenType"
|
||||
minOccurs="0"/>
|
||||
<element name="authInfo" type="contact:authInfoType"
|
||||
minOccurs="0"/>
|
||||
<element name="disclose" type="contact:discloseType"
|
||||
minOccurs="0"/>
|
||||
</sequence>
|
||||
</complexType>
|
||||
|
||||
<complexType name="chgPostalInfoType">
|
||||
<sequence>
|
||||
<element name="name" type="contact:postalLineType"
|
||||
minOccurs="0"/>
|
||||
<element name="org" type="contact:optPostalLineType"
|
||||
minOccurs="0"/>
|
||||
<element name="addr" type="contact:addrType"
|
||||
minOccurs="0"/>
|
||||
</sequence>
|
||||
<attribute name="type" type="contact:postalInfoEnumType"
|
||||
use="required"/>
|
||||
</complexType>
|
||||
|
||||
<!--
|
||||
Child response elements.
|
||||
-->
|
||||
<element name="chkData" type="contact:chkDataType"/>
|
||||
<element name="creData" type="contact:creDataType"/>
|
||||
<element name="infData" type="contact:infDataType"/>
|
||||
<element name="panData" type="contact:panDataType"/>
|
||||
<element name="trnData" type="contact:trnDataType"/>
|
||||
|
||||
<!--
|
||||
<check> response elements.
|
||||
-->
|
||||
<complexType name="chkDataType">
|
||||
<sequence>
|
||||
<element name="cd" type="contact:checkType"
|
||||
maxOccurs="unbounded"/>
|
||||
</sequence>
|
||||
</complexType>
|
||||
|
||||
<complexType name="checkType">
|
||||
<sequence>
|
||||
<element name="id" type="contact:checkIDType"/>
|
||||
<element name="reason" type="eppcom:reasonType"
|
||||
minOccurs="0"/>
|
||||
</sequence>
|
||||
</complexType>
|
||||
|
||||
<complexType name="checkIDType">
|
||||
<simpleContent>
|
||||
<extension base="eppcom:clIDType">
|
||||
<attribute name="avail" type="boolean"
|
||||
use="required"/>
|
||||
</extension>
|
||||
</simpleContent>
|
||||
</complexType>
|
||||
|
||||
<!--
|
||||
<create> response elements.
|
||||
-->
|
||||
<complexType name="creDataType">
|
||||
<sequence>
|
||||
<element name="id" type="eppcom:clIDType"/>
|
||||
<element name="crDate" type="dateTime"/>
|
||||
</sequence>
|
||||
</complexType>
|
||||
|
||||
<!--
|
||||
<info> response elements.
|
||||
-->
|
||||
<complexType name="infDataType">
|
||||
<sequence>
|
||||
<element name="id" type="eppcom:clIDType"/>
|
||||
<element name="roid" type="eppcom:roidType"/>
|
||||
<element name="status" type="contact:statusType"
|
||||
maxOccurs="7"/>
|
||||
<element name="postalInfo" type="contact:postalInfoType"
|
||||
maxOccurs="2"/>
|
||||
<element name="voice" type="contact:e164Type"
|
||||
minOccurs="0"/>
|
||||
<element name="fax" type="contact:e164Type"
|
||||
minOccurs="0"/>
|
||||
<element name="email" type="eppcom:minTokenType"/>
|
||||
<element name="clID" type="eppcom:clIDType"/>
|
||||
<element name="crID" type="eppcom:clIDType"/>
|
||||
<element name="crDate" type="dateTime"/>
|
||||
<element name="upID" type="eppcom:clIDType"
|
||||
minOccurs="0"/>
|
||||
<element name="upDate" type="dateTime"
|
||||
minOccurs="0"/>
|
||||
<element name="trDate" type="dateTime"
|
||||
minOccurs="0"/>
|
||||
<element name="authInfo" type="contact:authInfoType"
|
||||
minOccurs="0"/>
|
||||
<element name="disclose" type="contact:discloseType"
|
||||
minOccurs="0"/>
|
||||
</sequence>
|
||||
</complexType>
|
||||
|
||||
<!--
|
||||
Status is a combination of attributes and an optional human-readable
|
||||
message that may be expressed in languages other than English.
|
||||
-->
|
||||
<complexType name="statusType">
|
||||
<simpleContent>
|
||||
<extension base="normalizedString">
|
||||
<attribute name="s" type="contact:statusValueType"
|
||||
use="required"/>
|
||||
<attribute name="lang" type="language"
|
||||
default="en"/>
|
||||
</extension>
|
||||
</simpleContent>
|
||||
</complexType>
|
||||
|
||||
<simpleType name="statusValueType">
|
||||
<restriction base="token">
|
||||
<enumeration value="clientDeleteProhibited"/>
|
||||
<enumeration value="clientTransferProhibited"/>
|
||||
<enumeration value="clientUpdateProhibited"/>
|
||||
<enumeration value="linked"/>
|
||||
<enumeration value="ok"/>
|
||||
<enumeration value="pendingCreate"/>
|
||||
<enumeration value="pendingDelete"/>
|
||||
<enumeration value="pendingTransfer"/>
|
||||
<enumeration value="pendingUpdate"/>
|
||||
<enumeration value="serverDeleteProhibited"/>
|
||||
<enumeration value="serverTransferProhibited"/>
|
||||
<enumeration value="serverUpdateProhibited"/>
|
||||
</restriction>
|
||||
</simpleType>
|
||||
|
||||
<!--
|
||||
Pending action notification response elements.
|
||||
-->
|
||||
<complexType name="panDataType">
|
||||
<sequence>
|
||||
<element name="id" type="contact:paCLIDType"/>
|
||||
<element name="paTRID" type="epp:trIDType"/>
|
||||
<element name="paDate" type="dateTime"/>
|
||||
</sequence>
|
||||
</complexType>
|
||||
|
||||
<complexType name="paCLIDType">
|
||||
<simpleContent>
|
||||
<extension base="eppcom:clIDType">
|
||||
<attribute name="paResult" type="boolean"
|
||||
use="required"/>
|
||||
</extension>
|
||||
</simpleContent>
|
||||
</complexType>
|
||||
|
||||
<!--
|
||||
<transfer> response elements.
|
||||
-->
|
||||
<complexType name="trnDataType">
|
||||
<sequence>
|
||||
<element name="id" type="eppcom:clIDType"/>
|
||||
<element name="trStatus" type="eppcom:trStatusType"/>
|
||||
<element name="reID" type="eppcom:clIDType"/>
|
||||
<element name="reDate" type="dateTime"/>
|
||||
<element name="acID" type="eppcom:clIDType"/>
|
||||
<element name="acDate" type="dateTime"/>
|
||||
</sequence>
|
||||
</complexType>
|
||||
|
||||
<!--
|
||||
End of schema.
|
||||
-->
|
||||
</schema>
|
434
java/google/registry/xml/xsd/domain.xsd
Normal file
434
java/google/registry/xml/xsd/domain.xsd
Normal file
|
@ -0,0 +1,434 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
|
||||
<schema targetNamespace="urn:ietf:params:xml:ns:domain-1.0"
|
||||
xmlns:domain="urn:ietf:params:xml:ns:domain-1.0"
|
||||
xmlns:host="urn:ietf:params:xml:ns:host-1.0"
|
||||
xmlns:epp="urn:ietf:params:xml:ns:epp-1.0"
|
||||
xmlns:eppcom="urn:ietf:params:xml:ns:eppcom-1.0"
|
||||
xmlns="http://www.w3.org/2001/XMLSchema"
|
||||
elementFormDefault="qualified">
|
||||
|
||||
<!--
|
||||
Import common element types.
|
||||
-->
|
||||
<import namespace="urn:ietf:params:xml:ns:eppcom-1.0"
|
||||
schemaLocation="eppcom.xsd"/>
|
||||
<import namespace="urn:ietf:params:xml:ns:epp-1.0"
|
||||
schemaLocation="epp.xsd"/>
|
||||
<import namespace="urn:ietf:params:xml:ns:host-1.0"
|
||||
schemaLocation="host.xsd"/>
|
||||
|
||||
<annotation>
|
||||
<documentation>
|
||||
Extensible Provisioning Protocol v1.0
|
||||
domain provisioning schema.
|
||||
</documentation>
|
||||
</annotation>
|
||||
|
||||
<!--
|
||||
Child elements found in EPP commands.
|
||||
-->
|
||||
<element name="check" type="domain:mNameType"/>
|
||||
<element name="create" type="domain:createType"/>
|
||||
<element name="delete" type="domain:sNameType"/>
|
||||
<element name="info" type="domain:infoType"/>
|
||||
<element name="renew" type="domain:renewType"/>
|
||||
<element name="transfer" type="domain:transferType"/>
|
||||
<element name="update" type="domain:updateType"/>
|
||||
<!--
|
||||
Child elements of the <create> command.
|
||||
-->
|
||||
<complexType name="createType">
|
||||
<sequence>
|
||||
<element name="name" type="eppcom:labelType"/>
|
||||
<element name="period" type="domain:periodType"
|
||||
minOccurs="0"/>
|
||||
<element name="ns" type="domain:nsType"
|
||||
minOccurs="0"/>
|
||||
<element name="registrant" type="eppcom:clIDType"
|
||||
minOccurs="0"/>
|
||||
<element name="contact" type="domain:contactType"
|
||||
minOccurs="0" maxOccurs="unbounded"/>
|
||||
<element name="authInfo" type="domain:authInfoType"/>
|
||||
</sequence>
|
||||
</complexType>
|
||||
|
||||
<complexType name="periodType">
|
||||
<simpleContent>
|
||||
<extension base="domain:pLimitType">
|
||||
<attribute name="unit" type="domain:pUnitType"
|
||||
use="required"/>
|
||||
</extension>
|
||||
</simpleContent>
|
||||
</complexType>
|
||||
|
||||
<simpleType name="pLimitType">
|
||||
<restriction base="unsignedShort">
|
||||
<minInclusive value="1"/>
|
||||
<maxInclusive value="99"/>
|
||||
</restriction>
|
||||
</simpleType>
|
||||
|
||||
<simpleType name="pUnitType">
|
||||
<restriction base="token">
|
||||
<enumeration value="y"/>
|
||||
<enumeration value="m"/>
|
||||
</restriction>
|
||||
</simpleType>
|
||||
|
||||
<complexType name="nsType">
|
||||
<choice>
|
||||
<element name="hostObj" type="eppcom:labelType"
|
||||
maxOccurs="unbounded"/>
|
||||
<element name="hostAttr" type="domain:hostAttrType"
|
||||
maxOccurs="unbounded"/>
|
||||
</choice>
|
||||
</complexType>
|
||||
<!--
|
||||
Name servers are either host objects or attributes.
|
||||
-->
|
||||
|
||||
<complexType name="hostAttrType">
|
||||
<sequence>
|
||||
<element name="hostName" type="eppcom:labelType"/>
|
||||
<element name="hostAddr" type="host:addrType"
|
||||
minOccurs="0" maxOccurs="unbounded"/>
|
||||
</sequence>
|
||||
</complexType>
|
||||
<!--
|
||||
If attributes, addresses are optional and follow the
|
||||
structure defined in the host mapping.
|
||||
-->
|
||||
|
||||
<complexType name="contactType">
|
||||
<simpleContent>
|
||||
<extension base="eppcom:clIDType">
|
||||
<attribute name="type" type="domain:contactAttrType"/>
|
||||
</extension>
|
||||
</simpleContent>
|
||||
</complexType>
|
||||
|
||||
<simpleType name="contactAttrType">
|
||||
<restriction base="token">
|
||||
<enumeration value="admin"/>
|
||||
<enumeration value="billing"/>
|
||||
<enumeration value="tech"/>
|
||||
</restriction>
|
||||
</simpleType>
|
||||
|
||||
<complexType name="authInfoType">
|
||||
<choice>
|
||||
<element name="pw" type="eppcom:pwAuthInfoType"/>
|
||||
<element name="ext" type="eppcom:extAuthInfoType"/>
|
||||
</choice>
|
||||
</complexType>
|
||||
|
||||
<!--
|
||||
Child element of commands that require a single name.
|
||||
-->
|
||||
<complexType name="sNameType">
|
||||
<sequence>
|
||||
<element name="name" type="eppcom:labelType"/>
|
||||
</sequence>
|
||||
</complexType>
|
||||
<!--
|
||||
Child element of commands that accept multiple names.
|
||||
-->
|
||||
<complexType name="mNameType">
|
||||
<sequence>
|
||||
<element name="name" type="eppcom:labelType"
|
||||
maxOccurs="unbounded"/>
|
||||
</sequence>
|
||||
</complexType>
|
||||
<!--
|
||||
Child elements of the <info> command.
|
||||
-->
|
||||
<complexType name="infoType">
|
||||
<sequence>
|
||||
<element name="name" type="domain:infoNameType"/>
|
||||
<element name="authInfo" type="domain:authInfoType"
|
||||
minOccurs="0"/>
|
||||
</sequence>
|
||||
</complexType>
|
||||
|
||||
<complexType name="infoNameType">
|
||||
<simpleContent>
|
||||
<extension base = "eppcom:labelType">
|
||||
<attribute name="hosts" type="domain:hostsType"
|
||||
default="all"/>
|
||||
</extension>
|
||||
</simpleContent>
|
||||
</complexType>
|
||||
|
||||
<simpleType name="hostsType">
|
||||
<restriction base="token">
|
||||
<enumeration value="all"/>
|
||||
<enumeration value="del"/>
|
||||
<enumeration value="none"/>
|
||||
<enumeration value="sub"/>
|
||||
</restriction>
|
||||
</simpleType>
|
||||
|
||||
<!--
|
||||
Child elements of the <renew> command.
|
||||
-->
|
||||
<complexType name="renewType">
|
||||
<sequence>
|
||||
<element name="name" type="eppcom:labelType"/>
|
||||
<element name="curExpDate" type="date"/>
|
||||
<element name="period" type="domain:periodType"
|
||||
minOccurs="0"/>
|
||||
</sequence>
|
||||
</complexType>
|
||||
|
||||
<!--
|
||||
Child elements of the <transfer> command.
|
||||
-->
|
||||
<complexType name="transferType">
|
||||
<sequence>
|
||||
<element name="name" type="eppcom:labelType"/>
|
||||
<element name="period" type="domain:periodType"
|
||||
minOccurs="0"/>
|
||||
<element name="authInfo" type="domain:authInfoType"
|
||||
minOccurs="0"/>
|
||||
</sequence>
|
||||
</complexType>
|
||||
|
||||
<!--
|
||||
Child elements of the <update> command.
|
||||
-->
|
||||
<complexType name="updateType">
|
||||
<sequence>
|
||||
<element name="name" type="eppcom:labelType"/>
|
||||
<element name="add" type="domain:addRemType"
|
||||
minOccurs="0"/>
|
||||
<element name="rem" type="domain:addRemType"
|
||||
minOccurs="0"/>
|
||||
<element name="chg" type="domain:chgType"
|
||||
minOccurs="0"/>
|
||||
</sequence>
|
||||
</complexType>
|
||||
|
||||
<!--
|
||||
Data elements that can be added or removed.
|
||||
-->
|
||||
<complexType name="addRemType">
|
||||
<sequence>
|
||||
<element name="ns" type="domain:nsType"
|
||||
minOccurs="0"/>
|
||||
<element name="contact" type="domain:contactType"
|
||||
minOccurs="0" maxOccurs="unbounded"/>
|
||||
<element name="status" type="domain:statusType"
|
||||
minOccurs="0" maxOccurs="11"/>
|
||||
</sequence>
|
||||
</complexType>
|
||||
|
||||
<!--
|
||||
Data elements that can be changed.
|
||||
-->
|
||||
<complexType name="chgType">
|
||||
<sequence>
|
||||
<element name="registrant" type="domain:clIDChgType"
|
||||
minOccurs="0"/>
|
||||
<element name="authInfo" type="domain:authInfoChgType"
|
||||
minOccurs="0"/>
|
||||
</sequence>
|
||||
</complexType>
|
||||
|
||||
<!--
|
||||
Allow the registrant value to be nullified by changing the
|
||||
minLength restriction to "0".
|
||||
-->
|
||||
<simpleType name="clIDChgType">
|
||||
<restriction base="token">
|
||||
<minLength value="0"/>
|
||||
<maxLength value="16"/>
|
||||
</restriction>
|
||||
</simpleType>
|
||||
|
||||
<!--
|
||||
Allow the authInfo value to be nullified by including an
|
||||
empty element within the choice.
|
||||
-->
|
||||
<complexType name="authInfoChgType">
|
||||
<choice>
|
||||
<element name="pw" type="eppcom:pwAuthInfoType"/>
|
||||
<element name="ext" type="eppcom:extAuthInfoType"/>
|
||||
<element name="null"/>
|
||||
</choice>
|
||||
</complexType>
|
||||
|
||||
<!--
|
||||
Child response elements.
|
||||
-->
|
||||
<element name="chkData" type="domain:chkDataType"/>
|
||||
<element name="creData" type="domain:creDataType"/>
|
||||
<element name="infData" type="domain:infDataType"/>
|
||||
<element name="panData" type="domain:panDataType"/>
|
||||
<element name="renData" type="domain:renDataType"/>
|
||||
<element name="trnData" type="domain:trnDataType"/>
|
||||
|
||||
<!--
|
||||
<check> response elements.
|
||||
-->
|
||||
<complexType name="chkDataType">
|
||||
<sequence>
|
||||
<element name="cd" type="domain:checkType"
|
||||
maxOccurs="unbounded"/>
|
||||
</sequence>
|
||||
</complexType>
|
||||
|
||||
<complexType name="checkType">
|
||||
<sequence>
|
||||
<element name="name" type="domain:checkNameType"/>
|
||||
<element name="reason" type="eppcom:reasonType"
|
||||
minOccurs="0"/>
|
||||
</sequence>
|
||||
</complexType>
|
||||
|
||||
<complexType name="checkNameType">
|
||||
<simpleContent>
|
||||
<extension base="eppcom:labelType">
|
||||
<attribute name="avail" type="boolean"
|
||||
use="required"/>
|
||||
</extension>
|
||||
</simpleContent>
|
||||
</complexType>
|
||||
|
||||
<!--
|
||||
<create> response elements.
|
||||
-->
|
||||
<complexType name="creDataType">
|
||||
<sequence>
|
||||
<element name="name" type="eppcom:labelType"/>
|
||||
<element name="crDate" type="dateTime"/>
|
||||
<element name="exDate" type="dateTime"
|
||||
minOccurs="0"/>
|
||||
</sequence>
|
||||
</complexType>
|
||||
|
||||
<!--
|
||||
<info> response elements.
|
||||
-->
|
||||
|
||||
<complexType name="infDataType">
|
||||
<sequence>
|
||||
<element name="name" type="eppcom:labelType"/>
|
||||
<element name="roid" type="eppcom:roidType"/>
|
||||
<element name="status" type="domain:statusType"
|
||||
minOccurs="0" maxOccurs="11"/>
|
||||
<element name="registrant" type="eppcom:clIDType"
|
||||
minOccurs="0"/>
|
||||
<element name="contact" type="domain:contactType"
|
||||
minOccurs="0" maxOccurs="unbounded"/>
|
||||
<element name="ns" type="domain:nsType"
|
||||
minOccurs="0"/>
|
||||
<element name="host" type="eppcom:labelType"
|
||||
minOccurs="0" maxOccurs="unbounded"/>
|
||||
<element name="clID" type="eppcom:clIDType"/>
|
||||
<element name="crID" type="eppcom:clIDType"
|
||||
minOccurs="0"/>
|
||||
<element name="crDate" type="dateTime"
|
||||
minOccurs="0"/>
|
||||
<element name="upID" type="eppcom:clIDType"
|
||||
minOccurs="0"/>
|
||||
<element name="upDate" type="dateTime"
|
||||
minOccurs="0"/>
|
||||
<element name="exDate" type="dateTime"
|
||||
minOccurs="0"/>
|
||||
<element name="trDate" type="dateTime"
|
||||
minOccurs="0"/>
|
||||
<element name="authInfo" type="domain:authInfoType"
|
||||
minOccurs="0"/>
|
||||
</sequence>
|
||||
</complexType>
|
||||
|
||||
<!--
|
||||
Status is a combination of attributes and an optional
|
||||
human-readable message that may be expressed in languages other
|
||||
than English.
|
||||
-->
|
||||
<complexType name="statusType">
|
||||
<simpleContent>
|
||||
<extension base="normalizedString">
|
||||
<attribute name="s" type="domain:statusValueType"
|
||||
use="required"/>
|
||||
<attribute name="lang" type="language"
|
||||
default="en"/>
|
||||
</extension>
|
||||
</simpleContent>
|
||||
</complexType>
|
||||
|
||||
<simpleType name="statusValueType">
|
||||
<restriction base="token">
|
||||
<enumeration value="clientDeleteProhibited"/>
|
||||
<enumeration value="clientHold"/>
|
||||
<enumeration value="clientRenewProhibited"/>
|
||||
<enumeration value="clientTransferProhibited"/>
|
||||
<enumeration value="clientUpdateProhibited"/>
|
||||
<enumeration value="inactive"/>
|
||||
<enumeration value="ok"/>
|
||||
<enumeration value="pendingCreate"/>
|
||||
<enumeration value="pendingDelete"/>
|
||||
<enumeration value="pendingRenew"/>
|
||||
<enumeration value="pendingTransfer"/>
|
||||
<enumeration value="pendingUpdate"/>
|
||||
<enumeration value="serverDeleteProhibited"/>
|
||||
<enumeration value="serverHold"/>
|
||||
<enumeration value="serverRenewProhibited"/>
|
||||
<enumeration value="serverTransferProhibited"/>
|
||||
<enumeration value="serverUpdateProhibited"/>
|
||||
</restriction>
|
||||
</simpleType>
|
||||
|
||||
<!--
|
||||
Pending action notification response elements.
|
||||
-->
|
||||
<complexType name="panDataType">
|
||||
<sequence>
|
||||
<element name="name" type="domain:paNameType"/>
|
||||
<element name="paTRID" type="epp:trIDType"/>
|
||||
<element name="paDate" type="dateTime"/>
|
||||
</sequence>
|
||||
</complexType>
|
||||
|
||||
<complexType name="paNameType">
|
||||
<simpleContent>
|
||||
<extension base="eppcom:labelType">
|
||||
<attribute name="paResult" type="boolean"
|
||||
use="required"/>
|
||||
</extension>
|
||||
</simpleContent>
|
||||
</complexType>
|
||||
|
||||
<!--
|
||||
<renew> response elements.
|
||||
-->
|
||||
<complexType name="renDataType">
|
||||
<sequence>
|
||||
<element name="name" type="eppcom:labelType"/>
|
||||
<element name="exDate" type="dateTime"
|
||||
minOccurs="0"/>
|
||||
</sequence>
|
||||
</complexType>
|
||||
|
||||
<!--
|
||||
<transfer> response elements.
|
||||
-->
|
||||
<complexType name="trnDataType">
|
||||
<sequence>
|
||||
<element name="name" type="eppcom:labelType"/>
|
||||
<element name="trStatus" type="eppcom:trStatusType"/>
|
||||
<element name="reID" type="eppcom:clIDType"/>
|
||||
<element name="reDate" type="dateTime"/>
|
||||
<element name="acID" type="eppcom:clIDType"/>
|
||||
<element name="acDate" type="dateTime"/>
|
||||
<element name="exDate" type="dateTime"
|
||||
minOccurs="0"/>
|
||||
</sequence>
|
||||
</complexType>
|
||||
|
||||
<!--
|
||||
End of schema.
|
||||
-->
|
||||
</schema>
|
292
java/google/registry/xml/xsd/dsig.xsd
Normal file
292
java/google/registry/xml/xsd/dsig.xsd
Normal file
|
@ -0,0 +1,292 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!-- Schema extracted from http://www.w3.org/2000/09/xmldsig# -->
|
||||
<schema xmlns="http://www.w3.org/2001/XMLSchema"
|
||||
xmlns:ds="http://www.w3.org/2000/09/xmldsig#"
|
||||
targetNamespace="http://www.w3.org/2000/09/xmldsig#"
|
||||
version="0.1" elementFormDefault="qualified">
|
||||
|
||||
<!-- Basic Types Defined for Signatures -->
|
||||
|
||||
<simpleType name="CryptoBinary">
|
||||
<restriction base="base64Binary">
|
||||
</restriction>
|
||||
</simpleType>
|
||||
|
||||
<!-- Start Signature -->
|
||||
|
||||
<element name="Signature" type="ds:SignatureType"/>
|
||||
<complexType name="SignatureType">
|
||||
<sequence>
|
||||
<element ref="ds:SignedInfo"/>
|
||||
<element ref="ds:SignatureValue"/>
|
||||
<element ref="ds:KeyInfo" minOccurs="0"/>
|
||||
<element ref="ds:Object" minOccurs="0" maxOccurs="unbounded"/>
|
||||
</sequence>
|
||||
<attribute name="Id" type="ID" use="optional"/>
|
||||
</complexType>
|
||||
|
||||
<element name="SignatureValue" type="ds:SignatureValueType"/>
|
||||
<complexType name="SignatureValueType">
|
||||
<simpleContent>
|
||||
<extension base="base64Binary">
|
||||
<attribute name="Id" type="ID" use="optional"/>
|
||||
</extension>
|
||||
</simpleContent>
|
||||
</complexType>
|
||||
|
||||
<!-- Start SignedInfo -->
|
||||
|
||||
<element name="SignedInfo" type="ds:SignedInfoType"/>
|
||||
<complexType name="SignedInfoType">
|
||||
<sequence>
|
||||
<element ref="ds:CanonicalizationMethod"/>
|
||||
<element ref="ds:SignatureMethod"/>
|
||||
<element ref="ds:Reference" maxOccurs="unbounded"/>
|
||||
</sequence>
|
||||
<attribute name="Id" type="ID" use="optional"/>
|
||||
</complexType>
|
||||
|
||||
<element name="CanonicalizationMethod" type="ds:CanonicalizationMethodType"/>
|
||||
<complexType name="CanonicalizationMethodType" mixed="true">
|
||||
<sequence>
|
||||
<any namespace="##any" minOccurs="0" maxOccurs="unbounded"/>
|
||||
<!-- (0,unbounded) elements from (1,1) namespace -->
|
||||
</sequence>
|
||||
<attribute name="Algorithm" type="anyURI" use="required"/>
|
||||
</complexType>
|
||||
|
||||
<element name="SignatureMethod" type="ds:SignatureMethodType"/>
|
||||
<complexType name="SignatureMethodType" mixed="true">
|
||||
<sequence>
|
||||
<element name="HMACOutputLength" minOccurs="0" type="ds:HMACOutputLengthType"/>
|
||||
<any namespace="##other" minOccurs="0" maxOccurs="unbounded"/>
|
||||
<!-- (0,unbounded) elements from (1,1) external namespace -->
|
||||
</sequence>
|
||||
<attribute name="Algorithm" type="anyURI" use="required"/>
|
||||
</complexType>
|
||||
|
||||
<!-- Start Reference -->
|
||||
|
||||
<element name="Reference" type="ds:ReferenceType"/>
|
||||
<complexType name="ReferenceType">
|
||||
<sequence>
|
||||
<element ref="ds:Transforms" minOccurs="0"/>
|
||||
<element ref="ds:DigestMethod"/>
|
||||
<element ref="ds:DigestValue"/>
|
||||
</sequence>
|
||||
<attribute name="Id" type="ID" use="optional"/>
|
||||
<attribute name="URI" type="anyURI" use="optional"/>
|
||||
<attribute name="Type" type="anyURI" use="optional"/>
|
||||
</complexType>
|
||||
|
||||
<element name="Transforms" type="ds:TransformsType"/>
|
||||
<complexType name="TransformsType">
|
||||
<sequence>
|
||||
<element ref="ds:Transform" maxOccurs="unbounded"/>
|
||||
</sequence>
|
||||
</complexType>
|
||||
|
||||
<element name="Transform" type="ds:TransformType"/>
|
||||
<complexType name="TransformType" mixed="true">
|
||||
<choice minOccurs="0" maxOccurs="unbounded">
|
||||
<any namespace="##other" processContents="lax"/>
|
||||
<!-- (1,1) elements from (0,unbounded) namespaces -->
|
||||
<element name="XPath" type="string"/>
|
||||
</choice>
|
||||
<attribute name="Algorithm" type="anyURI" use="required"/>
|
||||
</complexType>
|
||||
|
||||
<!-- End Reference -->
|
||||
|
||||
<element name="DigestMethod" type="ds:DigestMethodType"/>
|
||||
<complexType name="DigestMethodType" mixed="true">
|
||||
<sequence>
|
||||
<any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
|
||||
</sequence>
|
||||
<attribute name="Algorithm" type="anyURI" use="required"/>
|
||||
</complexType>
|
||||
|
||||
<element name="DigestValue" type="ds:DigestValueType"/>
|
||||
<simpleType name="DigestValueType">
|
||||
<restriction base="base64Binary"/>
|
||||
</simpleType>
|
||||
|
||||
<!-- End SignedInfo -->
|
||||
|
||||
<!-- Start KeyInfo -->
|
||||
|
||||
<element name="KeyInfo" type="ds:KeyInfoType"/>
|
||||
<complexType name="KeyInfoType" mixed="true">
|
||||
<choice maxOccurs="unbounded">
|
||||
<element ref="ds:KeyName"/>
|
||||
<element ref="ds:KeyValue"/>
|
||||
<element ref="ds:RetrievalMethod"/>
|
||||
<element ref="ds:X509Data"/>
|
||||
<element ref="ds:PGPData"/>
|
||||
<element ref="ds:SPKIData"/>
|
||||
<element ref="ds:MgmtData"/>
|
||||
<any processContents="lax" namespace="##other"/>
|
||||
<!-- (1,1) elements from (0,unbounded) namespaces -->
|
||||
</choice>
|
||||
<attribute name="Id" type="ID" use="optional"/>
|
||||
</complexType>
|
||||
|
||||
<element name="KeyName" type="string"/>
|
||||
<element name="MgmtData" type="string"/>
|
||||
|
||||
<element name="KeyValue" type="ds:KeyValueType"/>
|
||||
<complexType name="KeyValueType" mixed="true">
|
||||
<choice>
|
||||
<element ref="ds:DSAKeyValue"/>
|
||||
<element ref="ds:RSAKeyValue"/>
|
||||
<any namespace="##other" processContents="lax"/>
|
||||
</choice>
|
||||
</complexType>
|
||||
|
||||
<element name="RetrievalMethod" type="ds:RetrievalMethodType"/>
|
||||
<complexType name="RetrievalMethodType">
|
||||
<sequence>
|
||||
<element ref="ds:Transforms" minOccurs="0"/>
|
||||
</sequence>
|
||||
<attribute name="URI" type="anyURI"/>
|
||||
<attribute name="Type" type="anyURI" use="optional"/>
|
||||
</complexType>
|
||||
|
||||
<!-- Start X509Data -->
|
||||
|
||||
<element name="X509Data" type="ds:X509DataType"/>
|
||||
<complexType name="X509DataType">
|
||||
<sequence maxOccurs="unbounded">
|
||||
<choice>
|
||||
<element name="X509IssuerSerial" type="ds:X509IssuerSerialType"/>
|
||||
<element name="X509SKI" type="base64Binary"/>
|
||||
<element name="X509SubjectName" type="string"/>
|
||||
<element name="X509Certificate" type="base64Binary"/>
|
||||
<element name="X509CRL" type="base64Binary"/>
|
||||
<any namespace="##other" processContents="lax"/>
|
||||
</choice>
|
||||
</sequence>
|
||||
</complexType>
|
||||
|
||||
<complexType name="X509IssuerSerialType">
|
||||
<sequence>
|
||||
<element name="X509IssuerName" type="string"/>
|
||||
<element name="X509SerialNumber" type="integer"/>
|
||||
</sequence>
|
||||
</complexType>
|
||||
|
||||
<!-- End X509Data -->
|
||||
|
||||
<!-- Begin PGPData -->
|
||||
|
||||
<element name="PGPData" type="ds:PGPDataType"/>
|
||||
<complexType name="PGPDataType">
|
||||
<choice>
|
||||
<sequence>
|
||||
<element name="PGPKeyID" type="base64Binary"/>
|
||||
<element name="PGPKeyPacket" type="base64Binary" minOccurs="0"/>
|
||||
<any namespace="##other" processContents="lax" minOccurs="0"
|
||||
maxOccurs="unbounded"/>
|
||||
</sequence>
|
||||
<sequence>
|
||||
<element name="PGPKeyPacket" type="base64Binary"/>
|
||||
<any namespace="##other" processContents="lax" minOccurs="0"
|
||||
maxOccurs="unbounded"/>
|
||||
</sequence>
|
||||
</choice>
|
||||
</complexType>
|
||||
|
||||
<!-- End PGPData -->
|
||||
|
||||
<!-- Begin SPKIData -->
|
||||
|
||||
<element name="SPKIData" type="ds:SPKIDataType"/>
|
||||
<complexType name="SPKIDataType">
|
||||
<sequence maxOccurs="unbounded">
|
||||
<element name="SPKISexp" type="base64Binary"/>
|
||||
<any namespace="##other" processContents="lax" minOccurs="0"/>
|
||||
</sequence>
|
||||
</complexType>
|
||||
|
||||
<!-- End SPKIData -->
|
||||
|
||||
<!-- End KeyInfo -->
|
||||
|
||||
<!-- Start Object (Manifest, SignatureProperty) -->
|
||||
|
||||
<element name="Object" type="ds:ObjectType"/>
|
||||
<complexType name="ObjectType" mixed="true">
|
||||
<sequence minOccurs="0" maxOccurs="unbounded">
|
||||
<any namespace="##any" processContents="lax"/>
|
||||
</sequence>
|
||||
<attribute name="Id" type="ID" use="optional"/>
|
||||
<attribute name="MimeType" type="string" use="optional"/> <!-- add a grep facet -->
|
||||
<attribute name="Encoding" type="anyURI" use="optional"/>
|
||||
</complexType>
|
||||
|
||||
<element name="Manifest" type="ds:ManifestType"/>
|
||||
<complexType name="ManifestType">
|
||||
<sequence>
|
||||
<element ref="ds:Reference" maxOccurs="unbounded"/>
|
||||
</sequence>
|
||||
<attribute name="Id" type="ID" use="optional"/>
|
||||
</complexType>
|
||||
|
||||
<element name="SignatureProperties" type="ds:SignaturePropertiesType"/>
|
||||
<complexType name="SignaturePropertiesType">
|
||||
<sequence>
|
||||
<element ref="ds:SignatureProperty" maxOccurs="unbounded"/>
|
||||
</sequence>
|
||||
<attribute name="Id" type="ID" use="optional"/>
|
||||
</complexType>
|
||||
|
||||
<element name="SignatureProperty" type="ds:SignaturePropertyType"/>
|
||||
<complexType name="SignaturePropertyType" mixed="true">
|
||||
<choice maxOccurs="unbounded">
|
||||
<any namespace="##other" processContents="lax"/>
|
||||
<!-- (1,1) elements from (1,unbounded) namespaces -->
|
||||
</choice>
|
||||
<attribute name="Target" type="anyURI" use="required"/>
|
||||
<attribute name="Id" type="ID" use="optional"/>
|
||||
</complexType>
|
||||
|
||||
<!-- End Object (Manifest, SignatureProperty) -->
|
||||
|
||||
<!-- Start Algorithm Parameters -->
|
||||
|
||||
<simpleType name="HMACOutputLengthType">
|
||||
<restriction base="integer"/>
|
||||
</simpleType>
|
||||
|
||||
<!-- Start KeyValue Element-types -->
|
||||
|
||||
<element name="DSAKeyValue" type="ds:DSAKeyValueType"/>
|
||||
<complexType name="DSAKeyValueType">
|
||||
<sequence>
|
||||
<sequence minOccurs="0">
|
||||
<element name="P" type="ds:CryptoBinary"/>
|
||||
<element name="Q" type="ds:CryptoBinary"/>
|
||||
</sequence>
|
||||
<element name="G" type="ds:CryptoBinary" minOccurs="0"/>
|
||||
<element name="Y" type="ds:CryptoBinary"/>
|
||||
<element name="J" type="ds:CryptoBinary" minOccurs="0"/>
|
||||
<sequence minOccurs="0">
|
||||
<element name="Seed" type="ds:CryptoBinary"/>
|
||||
<element name="PgenCounter" type="ds:CryptoBinary"/>
|
||||
</sequence>
|
||||
</sequence>
|
||||
</complexType>
|
||||
|
||||
<element name="RSAKeyValue" type="ds:RSAKeyValueType"/>
|
||||
<complexType name="RSAKeyValueType">
|
||||
<sequence>
|
||||
<element name="Modulus" type="ds:CryptoBinary"/>
|
||||
<element name="Exponent" type="ds:CryptoBinary"/>
|
||||
</sequence>
|
||||
</complexType>
|
||||
|
||||
<!-- End KeyValue Element-types -->
|
||||
|
||||
<!-- End Signature -->
|
||||
|
||||
</schema>
|
445
java/google/registry/xml/xsd/epp.xsd
Normal file
445
java/google/registry/xml/xsd/epp.xsd
Normal file
|
@ -0,0 +1,445 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
|
||||
<schema targetNamespace="urn:ietf:params:xml:ns:epp-1.0"
|
||||
xmlns:epp="urn:ietf:params:xml:ns:epp-1.0"
|
||||
xmlns:eppcom="urn:ietf:params:xml:ns:eppcom-1.0"
|
||||
xmlns="http://www.w3.org/2001/XMLSchema"
|
||||
elementFormDefault="qualified">
|
||||
|
||||
<!--
|
||||
Import common element types.
|
||||
-->
|
||||
<import namespace="urn:ietf:params:xml:ns:eppcom-1.0"
|
||||
schemaLocation="eppcom.xsd"/>
|
||||
|
||||
<annotation>
|
||||
<documentation>
|
||||
Extensible Provisioning Protocol v1.0 schema.
|
||||
</documentation>
|
||||
</annotation>
|
||||
|
||||
<!--
|
||||
Every EPP XML instance must begin with this element.
|
||||
-->
|
||||
<element name="epp" type="epp:eppType"/>
|
||||
|
||||
<!--
|
||||
An EPP XML instance must contain a greeting, hello, command,
|
||||
response, or extension.
|
||||
-->
|
||||
<complexType name="eppType">
|
||||
<choice>
|
||||
<element name="greeting" type="epp:greetingType"/>
|
||||
<element name="hello"/>
|
||||
<element name="command" type="epp:commandType"/>
|
||||
<element name="response" type="epp:responseType"/>
|
||||
<element name="extension" type="epp:extAnyType"/>
|
||||
</choice>
|
||||
</complexType>
|
||||
|
||||
<!--
|
||||
A greeting is sent by a server in response to a client connection
|
||||
or <hello>.
|
||||
-->
|
||||
<complexType name="greetingType">
|
||||
<sequence>
|
||||
<element name="svID" type="epp:sIDType"/>
|
||||
<element name="svDate" type="dateTime"/>
|
||||
<element name="svcMenu" type="epp:svcMenuType"/>
|
||||
<element name="dcp" type="epp:dcpType"/>
|
||||
</sequence>
|
||||
</complexType>
|
||||
|
||||
<!--
|
||||
Server IDs are strings with minimum and maximum length restrictions.
|
||||
-->
|
||||
<simpleType name="sIDType">
|
||||
<restriction base="normalizedString">
|
||||
<minLength value="3"/>
|
||||
<maxLength value="64"/>
|
||||
</restriction>
|
||||
</simpleType>
|
||||
|
||||
<!--
|
||||
A server greeting identifies available object services.
|
||||
-->
|
||||
<complexType name="svcMenuType">
|
||||
<sequence>
|
||||
<element name="version" type="epp:versionType"
|
||||
maxOccurs="unbounded"/>
|
||||
<element name="lang" type="language"
|
||||
maxOccurs="unbounded"/>
|
||||
<element name="objURI" type="anyURI"
|
||||
maxOccurs="unbounded"/>
|
||||
<element name="svcExtension" type="epp:extURIType"
|
||||
minOccurs="0"/>
|
||||
</sequence>
|
||||
</complexType>
|
||||
|
||||
<!--
|
||||
Data Collection Policy types.
|
||||
-->
|
||||
<complexType name="dcpType">
|
||||
<sequence>
|
||||
<element name="access" type="epp:dcpAccessType"/>
|
||||
<element name="statement" type="epp:dcpStatementType"
|
||||
maxOccurs="unbounded"/>
|
||||
<element name="expiry" type="epp:dcpExpiryType"
|
||||
minOccurs="0"/>
|
||||
</sequence>
|
||||
</complexType>
|
||||
|
||||
<complexType name="dcpAccessType">
|
||||
<choice>
|
||||
<element name="all"/>
|
||||
<element name="none"/>
|
||||
<element name="null"/>
|
||||
<element name="other"/>
|
||||
<element name="personal"/>
|
||||
<element name="personalAndOther"/>
|
||||
</choice>
|
||||
</complexType>
|
||||
|
||||
<complexType name="dcpStatementType">
|
||||
<sequence>
|
||||
<element name="purpose" type="epp:dcpPurposeType"/>
|
||||
<element name="recipient" type="epp:dcpRecipientType"/>
|
||||
<element name="retention" type="epp:dcpRetentionType"/>
|
||||
</sequence>
|
||||
</complexType>
|
||||
|
||||
<complexType name="dcpPurposeType">
|
||||
<sequence>
|
||||
<element name="admin"
|
||||
minOccurs="0"/>
|
||||
<element name="contact"
|
||||
minOccurs="0"/>
|
||||
<element name="other"
|
||||
minOccurs="0"/>
|
||||
<element name="prov"
|
||||
minOccurs="0"/>
|
||||
</sequence>
|
||||
</complexType>
|
||||
|
||||
<complexType name="dcpRecipientType">
|
||||
<sequence>
|
||||
<element name="other"
|
||||
minOccurs="0"/>
|
||||
<element name="ours" type="epp:dcpOursType"
|
||||
minOccurs="0" maxOccurs="unbounded"/>
|
||||
<element name="public"
|
||||
minOccurs="0"/>
|
||||
<element name="same"
|
||||
minOccurs="0"/>
|
||||
<element name="unrelated"
|
||||
minOccurs="0"/>
|
||||
</sequence>
|
||||
</complexType>
|
||||
|
||||
<complexType name="dcpOursType">
|
||||
<sequence>
|
||||
<element name="recDesc" type="epp:dcpRecDescType"
|
||||
minOccurs="0"/>
|
||||
</sequence>
|
||||
</complexType>
|
||||
|
||||
<simpleType name="dcpRecDescType">
|
||||
<restriction base="token">
|
||||
<minLength value="1"/>
|
||||
<maxLength value="255"/>
|
||||
</restriction>
|
||||
</simpleType>
|
||||
|
||||
<complexType name="dcpRetentionType">
|
||||
<choice>
|
||||
<element name="business"/>
|
||||
<element name="indefinite"/>
|
||||
<element name="legal"/>
|
||||
<element name="none"/>
|
||||
<element name="stated"/>
|
||||
</choice>
|
||||
</complexType>
|
||||
|
||||
<complexType name="dcpExpiryType">
|
||||
<choice>
|
||||
<element name="absolute" type="dateTime"/>
|
||||
<element name="relative" type="duration"/>
|
||||
</choice>
|
||||
</complexType>
|
||||
|
||||
<!--
|
||||
Extension framework types.
|
||||
-->
|
||||
<complexType name="extAnyType">
|
||||
<sequence>
|
||||
<any namespace="##other"
|
||||
maxOccurs="unbounded"/>
|
||||
</sequence>
|
||||
</complexType>
|
||||
|
||||
<complexType name="extURIType">
|
||||
<sequence>
|
||||
<element name="extURI" type="anyURI"
|
||||
maxOccurs="unbounded"/>
|
||||
</sequence>
|
||||
</complexType>
|
||||
|
||||
<!--
|
||||
An EPP version number is a dotted pair of decimal numbers.
|
||||
-->
|
||||
<simpleType name="versionType">
|
||||
<restriction base="token">
|
||||
<pattern value="[1-9]+\.[0-9]+"/>
|
||||
<enumeration value="1.0"/>
|
||||
</restriction>
|
||||
</simpleType>
|
||||
|
||||
<!--
|
||||
Command types.
|
||||
-->
|
||||
<complexType name="commandType">
|
||||
<sequence>
|
||||
<choice>
|
||||
<element name="check" type="epp:readWriteType"/>
|
||||
<element name="create" type="epp:readWriteType"/>
|
||||
<element name="delete" type="epp:readWriteType"/>
|
||||
<element name="info" type="epp:readWriteType"/>
|
||||
<element name="login" type="epp:loginType"/>
|
||||
<element name="logout"/>
|
||||
<element name="poll" type="epp:pollType"/>
|
||||
<element name="renew" type="epp:readWriteType"/>
|
||||
<element name="transfer" type="epp:transferType"/>
|
||||
<element name="update" type="epp:readWriteType"/>
|
||||
</choice>
|
||||
<element name="extension" type="epp:extAnyType"
|
||||
minOccurs="0"/>
|
||||
<element name="clTRID" type="epp:trIDStringType"
|
||||
minOccurs="0"/>
|
||||
</sequence>
|
||||
</complexType>
|
||||
|
||||
<!--
|
||||
The <login> command.
|
||||
-->
|
||||
<complexType name="loginType">
|
||||
<sequence>
|
||||
<element name="clID" type="eppcom:clIDType"/>
|
||||
<element name="pw" type="epp:pwType"/>
|
||||
<element name="newPW" type="epp:pwType"
|
||||
minOccurs="0"/>
|
||||
<element name="options" type="epp:credsOptionsType"/>
|
||||
<element name="svcs" type="epp:loginSvcType"/>
|
||||
</sequence>
|
||||
</complexType>
|
||||
|
||||
<complexType name="credsOptionsType">
|
||||
<sequence>
|
||||
<element name="version" type="epp:versionType"/>
|
||||
<element name="lang" type="language"/>
|
||||
</sequence>
|
||||
</complexType>
|
||||
|
||||
<simpleType name="pwType">
|
||||
<restriction base="token">
|
||||
<minLength value="6"/>
|
||||
<maxLength value="16"/>
|
||||
</restriction>
|
||||
</simpleType>
|
||||
|
||||
<complexType name="loginSvcType">
|
||||
<sequence>
|
||||
<element name="objURI" type="anyURI"
|
||||
maxOccurs="unbounded"/>
|
||||
<element name="svcExtension" type="epp:extURIType"
|
||||
minOccurs="0"/>
|
||||
</sequence>
|
||||
</complexType>
|
||||
|
||||
<!--
|
||||
The <poll> command.
|
||||
-->
|
||||
<complexType name="pollType">
|
||||
<attribute name="op" type="epp:pollOpType"
|
||||
use="required"/>
|
||||
<attribute name="msgID" type="token"/>
|
||||
</complexType>
|
||||
|
||||
<simpleType name="pollOpType">
|
||||
<restriction base="token">
|
||||
<enumeration value="ack"/>
|
||||
<enumeration value="req"/>
|
||||
</restriction>
|
||||
</simpleType>
|
||||
|
||||
<!--
|
||||
The <transfer> command. This is object-specific, and uses attributes
|
||||
to identify the requested operation.
|
||||
-->
|
||||
<complexType name="transferType">
|
||||
<sequence>
|
||||
<any namespace="##other"/>
|
||||
</sequence>
|
||||
<attribute name="op" type="epp:transferOpType"
|
||||
use="required"/>
|
||||
</complexType>
|
||||
|
||||
<simpleType name="transferOpType">
|
||||
<restriction base="token">
|
||||
<enumeration value="approve"/>
|
||||
<enumeration value="cancel"/>
|
||||
<enumeration value="query"/>
|
||||
<enumeration value="reject"/>
|
||||
<enumeration value="request"/>
|
||||
</restriction>
|
||||
</simpleType>
|
||||
|
||||
<!--
|
||||
All other object-centric commands. EPP doesn't specify the syntax or
|
||||
semantics of object-centric command elements. The elements MUST be
|
||||
described in detail in another schema specific to the object.
|
||||
-->
|
||||
<complexType name="readWriteType">
|
||||
<sequence>
|
||||
<any namespace="##other"/>
|
||||
</sequence>
|
||||
</complexType>
|
||||
|
||||
<complexType name="trIDType">
|
||||
<sequence>
|
||||
<element name="clTRID" type="epp:trIDStringType"
|
||||
minOccurs="0"/>
|
||||
<element name="svTRID" type="epp:trIDStringType"/>
|
||||
</sequence>
|
||||
</complexType>
|
||||
|
||||
<simpleType name="trIDStringType">
|
||||
<restriction base="token">
|
||||
<minLength value="3"/>
|
||||
<maxLength value="64"/>
|
||||
</restriction>
|
||||
</simpleType>
|
||||
|
||||
<!--
|
||||
Response types.
|
||||
-->
|
||||
<complexType name="responseType">
|
||||
<sequence>
|
||||
<element name="result" type="epp:resultType"
|
||||
maxOccurs="unbounded"/>
|
||||
<element name="msgQ" type="epp:msgQType"
|
||||
minOccurs="0"/>
|
||||
|
||||
<element name="resData" type="epp:extAnyType"
|
||||
minOccurs="0"/>
|
||||
<element name="extension" type="epp:extAnyType"
|
||||
minOccurs="0"/>
|
||||
<element name="trID" type="epp:trIDType"/>
|
||||
</sequence>
|
||||
</complexType>
|
||||
|
||||
<complexType name="resultType">
|
||||
<sequence>
|
||||
<element name="msg" type="epp:msgType"/>
|
||||
<choice minOccurs="0" maxOccurs="unbounded">
|
||||
<element name="value" type="epp:errValueType"/>
|
||||
<element name="extValue" type="epp:extErrValueType"/>
|
||||
</choice>
|
||||
</sequence>
|
||||
<attribute name="code" type="epp:resultCodeType"
|
||||
use="required"/>
|
||||
</complexType>
|
||||
|
||||
<complexType name="errValueType" mixed="true">
|
||||
<sequence>
|
||||
<any namespace="##any" processContents="skip"/>
|
||||
</sequence>
|
||||
<anyAttribute namespace="##any" processContents="skip"/>
|
||||
</complexType>
|
||||
|
||||
<complexType name="extErrValueType">
|
||||
<sequence>
|
||||
<element name="value" type="epp:errValueType"/>
|
||||
<element name="reason" type="epp:msgType"/>
|
||||
</sequence>
|
||||
</complexType>
|
||||
|
||||
<complexType name="msgQType">
|
||||
<sequence>
|
||||
<element name="qDate" type="dateTime"
|
||||
minOccurs="0"/>
|
||||
<element name="msg" type="epp:mixedMsgType"
|
||||
minOccurs="0"/>
|
||||
</sequence>
|
||||
<attribute name="count" type="unsignedLong"
|
||||
use="required"/>
|
||||
<attribute name="id" type="eppcom:minTokenType"
|
||||
use="required"/>
|
||||
</complexType>
|
||||
|
||||
<complexType name="mixedMsgType" mixed="true">
|
||||
<sequence>
|
||||
<any processContents="skip"
|
||||
minOccurs="0" maxOccurs="unbounded"/>
|
||||
</sequence>
|
||||
<attribute name="lang" type="language"
|
||||
default="en"/>
|
||||
</complexType>
|
||||
|
||||
<!--
|
||||
Human-readable text may be expressed in languages other than English.
|
||||
-->
|
||||
<complexType name="msgType">
|
||||
<simpleContent>
|
||||
<extension base="normalizedString">
|
||||
<attribute name="lang" type="language"
|
||||
default="en"/>
|
||||
</extension>
|
||||
</simpleContent>
|
||||
</complexType>
|
||||
|
||||
<!--
|
||||
EPP result codes.
|
||||
-->
|
||||
<simpleType name="resultCodeType">
|
||||
<restriction base="unsignedShort">
|
||||
<enumeration value="1000"/>
|
||||
<enumeration value="1001"/>
|
||||
<enumeration value="1300"/>
|
||||
<enumeration value="1301"/>
|
||||
<enumeration value="1500"/>
|
||||
<enumeration value="2000"/>
|
||||
<enumeration value="2001"/>
|
||||
<enumeration value="2002"/>
|
||||
<enumeration value="2003"/>
|
||||
<enumeration value="2004"/>
|
||||
<enumeration value="2005"/>
|
||||
<enumeration value="2100"/>
|
||||
<enumeration value="2101"/>
|
||||
<enumeration value="2102"/>
|
||||
<enumeration value="2103"/>
|
||||
<enumeration value="2104"/>
|
||||
<enumeration value="2105"/>
|
||||
<enumeration value="2106"/>
|
||||
<enumeration value="2200"/>
|
||||
<enumeration value="2201"/>
|
||||
<enumeration value="2202"/>
|
||||
<enumeration value="2300"/>
|
||||
<enumeration value="2301"/>
|
||||
<enumeration value="2302"/>
|
||||
<enumeration value="2303"/>
|
||||
<enumeration value="2304"/>
|
||||
<enumeration value="2305"/>
|
||||
<enumeration value="2306"/>
|
||||
<enumeration value="2307"/>
|
||||
<enumeration value="2308"/>
|
||||
<enumeration value="2400"/>
|
||||
<enumeration value="2500"/>
|
||||
<enumeration value="2501"/>
|
||||
<enumeration value="2502"/>
|
||||
</restriction>
|
||||
</simpleType>
|
||||
|
||||
<!--
|
||||
End of schema.
|
||||
-->
|
||||
</schema>
|
107
java/google/registry/xml/xsd/eppcom.xsd
Normal file
107
java/google/registry/xml/xsd/eppcom.xsd
Normal file
|
@ -0,0 +1,107 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
|
||||
<schema targetNamespace="urn:ietf:params:xml:ns:eppcom-1.0"
|
||||
xmlns:eppcom="urn:ietf:params:xml:ns:eppcom-1.0"
|
||||
xmlns="http://www.w3.org/2001/XMLSchema"
|
||||
elementFormDefault="qualified">
|
||||
|
||||
<annotation>
|
||||
<documentation>
|
||||
Extensible Provisioning Protocol v1.0
|
||||
shared structures schema.
|
||||
</documentation>
|
||||
</annotation>
|
||||
|
||||
<!--
|
||||
Object authorization information types.
|
||||
-->
|
||||
<complexType name="pwAuthInfoType">
|
||||
<simpleContent>
|
||||
<extension base="normalizedString">
|
||||
<attribute name="roid" type="eppcom:roidType"/>
|
||||
</extension>
|
||||
</simpleContent>
|
||||
</complexType>
|
||||
|
||||
<complexType name="extAuthInfoType">
|
||||
<sequence>
|
||||
<any namespace="##other"/>
|
||||
</sequence>
|
||||
</complexType>
|
||||
|
||||
<!--
|
||||
<check> response types.
|
||||
-->
|
||||
<complexType name="reasonType">
|
||||
<simpleContent>
|
||||
<extension base="eppcom:reasonBaseType">
|
||||
<attribute name="lang" type="language"/>
|
||||
</extension>
|
||||
</simpleContent>
|
||||
</complexType>
|
||||
|
||||
<simpleType name="reasonBaseType">
|
||||
<restriction base="token">
|
||||
<minLength value="1"/>
|
||||
<maxLength value="32"/>
|
||||
</restriction>
|
||||
</simpleType>
|
||||
|
||||
<!--
|
||||
Abstract client and object identifier type.
|
||||
-->
|
||||
<simpleType name="clIDType">
|
||||
<restriction base="token">
|
||||
<minLength value="3"/>
|
||||
<maxLength value="16"/>
|
||||
</restriction>
|
||||
</simpleType>
|
||||
|
||||
<!--
|
||||
DNS label type.
|
||||
-->
|
||||
|
||||
<simpleType name="labelType">
|
||||
<restriction base="token">
|
||||
<minLength value="1"/>
|
||||
<maxLength value="255"/>
|
||||
</restriction>
|
||||
</simpleType>
|
||||
|
||||
<!--
|
||||
Non-empty token type.
|
||||
-->
|
||||
<simpleType name="minTokenType">
|
||||
<restriction base="token">
|
||||
<minLength value="1"/>
|
||||
</restriction>
|
||||
</simpleType>
|
||||
|
||||
<!--
|
||||
Repository Object IDentifier type.
|
||||
-->
|
||||
<simpleType name="roidType">
|
||||
<restriction base="token">
|
||||
<pattern value="(\w|_){1,80}-\w{1,8}"/>
|
||||
</restriction>
|
||||
</simpleType>
|
||||
|
||||
<!--
|
||||
Transfer status identifiers.
|
||||
-->
|
||||
|
||||
<simpleType name="trStatusType">
|
||||
<restriction base="token">
|
||||
<enumeration value="clientApproved"/>
|
||||
<enumeration value="clientCancelled"/>
|
||||
<enumeration value="clientRejected"/>
|
||||
<enumeration value="pending"/>
|
||||
<enumeration value="serverApproved"/>
|
||||
<enumeration value="serverCancelled"/>
|
||||
</restriction>
|
||||
</simpleType>
|
||||
|
||||
<!--
|
||||
End of schema.
|
||||
-->
|
||||
</schema>
|
239
java/google/registry/xml/xsd/fee.xsd
Normal file
239
java/google/registry/xml/xsd/fee.xsd
Normal file
|
@ -0,0 +1,239 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<schema xmlns="http://www.w3.org/2001/XMLSchema"
|
||||
xmlns:fee="urn:ietf:params:xml:ns:fee-0.6"
|
||||
xmlns:eppcom="urn:ietf:params:xml:ns:eppcom-1.0"
|
||||
xmlns:domain="urn:ietf:params:xml:ns:domain-1.0"
|
||||
targetNamespace="urn:ietf:params:xml:ns:fee-0.6"
|
||||
elementFormDefault="qualified">
|
||||
|
||||
<import namespace="urn:ietf:params:xml:ns:eppcom-1.0" />
|
||||
<import namespace="urn:ietf:params:xml:ns:domain-1.0" />
|
||||
|
||||
<annotation>
|
||||
<documentation>
|
||||
Extensible Provisioning Protocol v1.0 domain name extension schema for fee information.
|
||||
Downloaded from https://raw.githubusercontent.com/centralnic/epp-fee-extension/master/fee.xsd.
|
||||
</documentation>
|
||||
</annotation>
|
||||
|
||||
<!--
|
||||
Child elements found in EPP commands and responses
|
||||
-->
|
||||
<element name="check" type="fee:checkType" />
|
||||
<element name="chkData" type="fee:chkDataType" />
|
||||
<element name="info" type="fee:infoType" />
|
||||
<element name="infData" type="fee:infDataType" />
|
||||
<element name="create" type="fee:transformCommandType" />
|
||||
<element name="creData" type="fee:transformResultType" />
|
||||
<element name="renew" type="fee:transformCommandType" />
|
||||
<element name="renData" type="fee:transformResultType" />
|
||||
<element name="transfer" type="fee:transformCommandType" />
|
||||
<element name="trnData" type="fee:transferResultType" />
|
||||
<element name="update" type="fee:transformCommandType" />
|
||||
<element name="updData" type="fee:transformResultType" />
|
||||
<element name="delData" type="fee:deleteDataType" />
|
||||
|
||||
<!--
|
||||
client <check> command
|
||||
-->
|
||||
<complexType name="checkType">
|
||||
<sequence>
|
||||
<element name="domain" type="fee:domainCheckType"
|
||||
maxOccurs="unbounded" />
|
||||
</sequence>
|
||||
</complexType>
|
||||
|
||||
<complexType name="domainCheckType">
|
||||
<sequence>
|
||||
<element name="name" type="eppcom:labelType" />
|
||||
<element name="currency" type="fee:currencyType"
|
||||
minOccurs="0" />
|
||||
<element name="command" type="fee:commandType" />
|
||||
<element name="period" type="domain:periodType"
|
||||
minOccurs="0" />
|
||||
</sequence>
|
||||
</complexType>
|
||||
|
||||
|
||||
<!--
|
||||
server <check> result
|
||||
-->
|
||||
<complexType name="chkDataType">
|
||||
<sequence>
|
||||
<element name="cd" type="fee:domainCDType"
|
||||
maxOccurs="unbounded" />
|
||||
</sequence>
|
||||
</complexType>
|
||||
|
||||
<complexType name="domainCDType">
|
||||
<sequence>
|
||||
<element name="name" type="eppcom:labelType" />
|
||||
<element name="currency" type="fee:currencyType" />
|
||||
<element name="command" type="fee:commandType" />
|
||||
<element name="period" type="domain:periodType" />
|
||||
<element name="fee" type="fee:feeType"
|
||||
minOccurs="0" maxOccurs="unbounded" />
|
||||
<element name="class" type="token" minOccurs="0" />
|
||||
</sequence>
|
||||
</complexType>
|
||||
|
||||
<!--
|
||||
client <info> command
|
||||
-->
|
||||
<complexType name="infoType">
|
||||
<sequence>
|
||||
<element name="currency" type="fee:currencyType" />
|
||||
<element name="command" type="fee:commandType" />
|
||||
<element name="period" type="domain:periodType" />
|
||||
</sequence>
|
||||
</complexType>
|
||||
|
||||
<!--
|
||||
server <info> result
|
||||
-->
|
||||
<complexType name="infDataType">
|
||||
<sequence>
|
||||
<element name="currency" type="fee:currencyType" />
|
||||
<element name="command" type="fee:commandType" />
|
||||
<element name="period" type="domain:periodType" />
|
||||
<element name="fee" type="fee:feeType"
|
||||
maxOccurs="unbounded" />
|
||||
<element name="class" type="token" minOccurs="0" />
|
||||
</sequence>
|
||||
</complexType>
|
||||
|
||||
<!--
|
||||
general transform (create, renew, update, transfer) command
|
||||
-->
|
||||
<complexType name="transformCommandType">
|
||||
<sequence>
|
||||
<element name="currency" type="fee:currencyType" />
|
||||
<element name="fee" type="fee:feeType"
|
||||
maxOccurs="unbounded" />
|
||||
</sequence>
|
||||
</complexType>
|
||||
|
||||
<!--
|
||||
general transform (create, renew, update) result
|
||||
-->
|
||||
<complexType name="transformResultType">
|
||||
<sequence>
|
||||
<element name="currency" type="fee:currencyType" />
|
||||
<element name="fee" type="fee:feeType"
|
||||
maxOccurs="unbounded" />
|
||||
<element name="balance" type="fee:balanceType"
|
||||
minOccurs="0" />
|
||||
<element name="creditLimit" type="fee:creditLimitType"
|
||||
minOccurs="0" />
|
||||
</sequence>
|
||||
</complexType>
|
||||
|
||||
<!--
|
||||
transfer result
|
||||
-->
|
||||
<complexType name="transferResultType">
|
||||
<sequence>
|
||||
<element name="currency" type="fee:currencyType" />
|
||||
|
||||
<!-- only used op="query" responses -->
|
||||
<element name="period" type="domain:periodType"
|
||||
minOccurs="0" />
|
||||
|
||||
<element name="fee" type="fee:feeType"
|
||||
maxOccurs="unbounded" />
|
||||
<element name="balance" type="fee:balanceType"
|
||||
minOccurs="0" />
|
||||
<element name="creditLimit" type="fee:creditLimitType"
|
||||
minOccurs="0" />
|
||||
</sequence>
|
||||
</complexType>
|
||||
|
||||
<!--
|
||||
delete result
|
||||
-->
|
||||
<complexType name="deleteDataType">
|
||||
<sequence>
|
||||
<element name="currency" type="fee:currencyType" />
|
||||
<element name="credit" type="fee:creditType"
|
||||
maxOccurs="unbounded" />
|
||||
<element name="balance" type="fee:balanceType"
|
||||
minOccurs="0" />
|
||||
<element name="creditLimit" type="fee:creditLimitType"
|
||||
minOccurs="0" />
|
||||
</sequence>
|
||||
</complexType>
|
||||
|
||||
<!--
|
||||
common types
|
||||
-->
|
||||
<simpleType name="currencyType">
|
||||
<restriction base="string">
|
||||
<pattern value="[A-Z]{3}" />
|
||||
</restriction>
|
||||
</simpleType>
|
||||
|
||||
<complexType name="commandType">
|
||||
<simpleContent>
|
||||
<extension base="fee:commandTypeValue">
|
||||
<attribute name="phase" type="token" />
|
||||
<attribute name="subphase" type="token" />
|
||||
</extension>
|
||||
</simpleContent>
|
||||
</complexType>
|
||||
|
||||
<simpleType name="commandTypeValue">
|
||||
<restriction base="token">
|
||||
<minLength value="3"/>
|
||||
<maxLength value="16"/>
|
||||
</restriction>
|
||||
</simpleType>
|
||||
|
||||
<simpleType name="nonNegativeDecimal">
|
||||
<restriction base="decimal">
|
||||
<minInclusive value="0" />
|
||||
</restriction>
|
||||
</simpleType>
|
||||
|
||||
<simpleType name="negativeDecimal">
|
||||
<restriction base="decimal">
|
||||
<maxInclusive value="0" />
|
||||
</restriction>
|
||||
</simpleType>
|
||||
|
||||
<complexType name="feeType">
|
||||
<simpleContent>
|
||||
<extension base="fee:nonNegativeDecimal">
|
||||
<attribute name="description"/>
|
||||
<attribute name="refundable" type="boolean"
|
||||
default="1" />
|
||||
<attribute name="grace-period" type="duration"
|
||||
default="P0D" />
|
||||
<attribute name="applied" default="immediate">
|
||||
<simpleType>
|
||||
<restriction base="token">
|
||||
<enumeration value="immediate" />
|
||||
<enumeration value="delayed" />
|
||||
</restriction>
|
||||
</simpleType>
|
||||
</attribute>
|
||||
</extension>
|
||||
</simpleContent>
|
||||
</complexType>
|
||||
|
||||
<complexType name="creditType">
|
||||
<simpleContent>
|
||||
<extension base="fee:negativeDecimal">
|
||||
<attribute name="description"/>
|
||||
</extension>
|
||||
</simpleContent>
|
||||
</complexType>
|
||||
|
||||
<simpleType name="balanceType">
|
||||
<restriction base="decimal" />
|
||||
</simpleType>
|
||||
|
||||
<simpleType name="creditLimitType">
|
||||
<restriction base="decimal" />
|
||||
</simpleType>
|
||||
|
||||
</schema>
|
242
java/google/registry/xml/xsd/host.xsd
Normal file
242
java/google/registry/xml/xsd/host.xsd
Normal file
|
@ -0,0 +1,242 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
|
||||
<schema targetNamespace="urn:ietf:params:xml:ns:host-1.0"
|
||||
xmlns:host="urn:ietf:params:xml:ns:host-1.0"
|
||||
xmlns:epp="urn:ietf:params:xml:ns:epp-1.0"
|
||||
xmlns:eppcom="urn:ietf:params:xml:ns:eppcom-1.0"
|
||||
xmlns="http://www.w3.org/2001/XMLSchema"
|
||||
elementFormDefault="qualified">
|
||||
|
||||
<!--
|
||||
Import common element types.
|
||||
-->
|
||||
<import namespace="urn:ietf:params:xml:ns:eppcom-1.0"
|
||||
schemaLocation="eppcom.xsd"/>
|
||||
<import namespace="urn:ietf:params:xml:ns:epp-1.0"
|
||||
schemaLocation="epp.xsd"/>
|
||||
|
||||
<annotation>
|
||||
<documentation>
|
||||
Extensible Provisioning Protocol v1.0
|
||||
host provisioning schema.
|
||||
</documentation>
|
||||
</annotation>
|
||||
|
||||
<!--
|
||||
Child elements found in EPP commands.
|
||||
-->
|
||||
<element name="check" type="host:mNameType"/>
|
||||
<element name="create" type="host:createType"/>
|
||||
<element name="delete" type="host:sNameType"/>
|
||||
<element name="info" type="host:sNameType"/>
|
||||
<element name="update" type="host:updateType"/>
|
||||
|
||||
<!--
|
||||
Child elements of the <create> command.
|
||||
-->
|
||||
<complexType name="createType">
|
||||
<sequence>
|
||||
<element name="name" type="eppcom:labelType"/>
|
||||
<element name="addr" type="host:addrType"
|
||||
minOccurs="0" maxOccurs="unbounded"/>
|
||||
</sequence>
|
||||
</complexType>
|
||||
|
||||
<complexType name="addrType">
|
||||
<simpleContent>
|
||||
<extension base="host:addrStringType">
|
||||
<attribute name="ip" type="host:ipType"
|
||||
default="v4"/>
|
||||
</extension>
|
||||
</simpleContent>
|
||||
</complexType>
|
||||
|
||||
<simpleType name="addrStringType">
|
||||
<restriction base="token">
|
||||
<minLength value="3"/>
|
||||
<maxLength value="45"/>
|
||||
</restriction>
|
||||
</simpleType>
|
||||
|
||||
<simpleType name="ipType">
|
||||
<restriction base="token">
|
||||
<enumeration value="v4"/>
|
||||
<enumeration value="v6"/>
|
||||
</restriction>
|
||||
</simpleType>
|
||||
|
||||
<!--
|
||||
Child elements of the <delete> and <info> commands.
|
||||
-->
|
||||
<complexType name="sNameType">
|
||||
<sequence>
|
||||
<element name="name" type="eppcom:labelType"/>
|
||||
</sequence>
|
||||
</complexType>
|
||||
|
||||
<!--
|
||||
Child element of commands that accept multiple names.
|
||||
-->
|
||||
<complexType name="mNameType">
|
||||
<sequence>
|
||||
<element name="name" type="eppcom:labelType"
|
||||
maxOccurs="unbounded"/>
|
||||
</sequence>
|
||||
</complexType>
|
||||
<!--
|
||||
Child elements of the <update> command.
|
||||
-->
|
||||
<complexType name="updateType">
|
||||
<sequence>
|
||||
<element name="name" type="eppcom:labelType"/>
|
||||
<element name="add" type="host:addRemType"
|
||||
minOccurs="0"/>
|
||||
<element name="rem" type="host:addRemType"
|
||||
minOccurs="0"/>
|
||||
<element name="chg" type="host:chgType"
|
||||
minOccurs="0"/>
|
||||
</sequence>
|
||||
</complexType>
|
||||
|
||||
<!--
|
||||
Data elements that can be added or removed.
|
||||
-->
|
||||
<complexType name="addRemType">
|
||||
<sequence>
|
||||
<element name="addr" type="host:addrType"
|
||||
minOccurs="0" maxOccurs="unbounded"/>
|
||||
<element name="status" type="host:statusType"
|
||||
minOccurs="0" maxOccurs="7"/>
|
||||
</sequence>
|
||||
</complexType>
|
||||
|
||||
<!--
|
||||
Data elements that can be changed.
|
||||
-->
|
||||
<complexType name="chgType">
|
||||
<sequence>
|
||||
<element name="name" type="eppcom:labelType"/>
|
||||
</sequence>
|
||||
</complexType>
|
||||
|
||||
<!--
|
||||
Child response elements.
|
||||
-->
|
||||
<element name="chkData" type="host:chkDataType"/>
|
||||
<element name="creData" type="host:creDataType"/>
|
||||
<element name="infData" type="host:infDataType"/>
|
||||
<element name="panData" type="host:panDataType"/>
|
||||
|
||||
<!--
|
||||
<check> response elements.
|
||||
-->
|
||||
<complexType name="chkDataType">
|
||||
<sequence>
|
||||
<element name="cd" type="host:checkType"
|
||||
maxOccurs="unbounded"/>
|
||||
</sequence>
|
||||
</complexType>
|
||||
|
||||
<complexType name="checkType">
|
||||
<sequence>
|
||||
<element name="name" type="host:checkNameType"/>
|
||||
<element name="reason" type="eppcom:reasonType"
|
||||
minOccurs="0"/>
|
||||
</sequence>
|
||||
</complexType>
|
||||
|
||||
<complexType name="checkNameType">
|
||||
<simpleContent>
|
||||
<extension base="eppcom:labelType">
|
||||
<attribute name="avail" type="boolean"
|
||||
use="required"/>
|
||||
</extension>
|
||||
</simpleContent>
|
||||
</complexType>
|
||||
|
||||
<!--
|
||||
<create> response elements.
|
||||
-->
|
||||
<complexType name="creDataType">
|
||||
<sequence>
|
||||
<element name="name" type="eppcom:labelType"/>
|
||||
<element name="crDate" type="dateTime"/>
|
||||
</sequence>
|
||||
</complexType>
|
||||
|
||||
<!--
|
||||
<info> response elements.
|
||||
-->
|
||||
<complexType name="infDataType">
|
||||
<sequence>
|
||||
<element name="name" type="eppcom:labelType"/>
|
||||
<element name="roid" type="eppcom:roidType"/>
|
||||
<element name="status" type="host:statusType"
|
||||
maxOccurs="7"/>
|
||||
<element name="addr" type="host:addrType"
|
||||
minOccurs="0" maxOccurs="unbounded"/>
|
||||
<element name="clID" type="eppcom:clIDType"/>
|
||||
<element name="crID" type="eppcom:clIDType"/>
|
||||
<element name="crDate" type="dateTime"/>
|
||||
<element name="upID" type="eppcom:clIDType"
|
||||
minOccurs="0"/>
|
||||
<element name="upDate" type="dateTime"
|
||||
minOccurs="0"/>
|
||||
<element name="trDate" type="dateTime"
|
||||
minOccurs="0"/>
|
||||
</sequence>
|
||||
</complexType>
|
||||
|
||||
<!--
|
||||
Status is a combination of attributes and an optional human-readable
|
||||
message that may be expressed in languages other than English.
|
||||
-->
|
||||
<complexType name="statusType">
|
||||
<simpleContent>
|
||||
<extension base="normalizedString">
|
||||
<attribute name="s" type="host:statusValueType"
|
||||
use="required"/>
|
||||
<attribute name="lang" type="language"
|
||||
default="en"/>
|
||||
</extension>
|
||||
</simpleContent>
|
||||
</complexType>
|
||||
|
||||
<simpleType name="statusValueType">
|
||||
<restriction base="token">
|
||||
<enumeration value="clientDeleteProhibited"/>
|
||||
<enumeration value="clientUpdateProhibited"/>
|
||||
<enumeration value="linked"/>
|
||||
<enumeration value="ok"/>
|
||||
<enumeration value="pendingCreate"/>
|
||||
<enumeration value="pendingDelete"/>
|
||||
<enumeration value="pendingTransfer"/>
|
||||
<enumeration value="pendingUpdate"/>
|
||||
<enumeration value="serverDeleteProhibited"/>
|
||||
<enumeration value="serverUpdateProhibited"/>
|
||||
</restriction>
|
||||
</simpleType>
|
||||
|
||||
<!--
|
||||
Pending action notification response elements.
|
||||
-->
|
||||
<complexType name="panDataType">
|
||||
<sequence>
|
||||
<element name="name" type="host:paNameType"/>
|
||||
<element name="paTRID" type="epp:trIDType"/>
|
||||
<element name="paDate" type="dateTime"/>
|
||||
</sequence>
|
||||
</complexType>
|
||||
<complexType name="paNameType">
|
||||
<simpleContent>
|
||||
<extension base="eppcom:labelType">
|
||||
<attribute name="paResult" type="boolean"
|
||||
use="required"/>
|
||||
</extension>
|
||||
</simpleContent>
|
||||
</complexType>
|
||||
|
||||
<!--
|
||||
End of schema.
|
||||
-->
|
||||
</schema>
|
35
java/google/registry/xml/xsd/iirdea.xsd
Normal file
35
java/google/registry/xml/xsd/iirdea.xsd
Normal file
|
@ -0,0 +1,35 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<schema targetNamespace="urn:ietf:params:xml:ns:iirdea-1.0"
|
||||
xmlns:iirdea="urn:ietf:params:xml:ns:iirdea-1.0"
|
||||
xmlns="http://www.w3.org/2001/XMLSchema"
|
||||
elementFormDefault="qualified">
|
||||
|
||||
<annotation>
|
||||
<documentation>
|
||||
ICANN interfaces for registries and data escrow agents
|
||||
</documentation>
|
||||
</annotation>
|
||||
|
||||
<element name="response" type="iirdea:responseType"/>
|
||||
|
||||
<complexType name="responseType">
|
||||
<sequence>
|
||||
<element name="result" type="iirdea:resultType"/>
|
||||
</sequence>
|
||||
</complexType>
|
||||
|
||||
<complexType name="resultType">
|
||||
<sequence>
|
||||
<element name="msg" type="token"/>
|
||||
<element name="description" type="string" minOccurs="0"/>
|
||||
</sequence>
|
||||
<attribute name="code" type="iirdea:codeType" use="required"/>
|
||||
</complexType>
|
||||
|
||||
<simpleType name="codeType">
|
||||
<restriction base="unsignedShort">
|
||||
<minInclusive value="1000"/>
|
||||
<maxInclusive value="9999"/>
|
||||
</restriction>
|
||||
</simpleType>
|
||||
</schema>
|
246
java/google/registry/xml/xsd/launch.xsd
Normal file
246
java/google/registry/xml/xsd/launch.xsd
Normal file
|
@ -0,0 +1,246 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<schema targetNamespace="urn:ietf:params:xml:ns:launch-1.0" xmlns:launch="urn:ietf:params:xml:ns:launch-1.0"
|
||||
xmlns:eppcom="urn:ietf:params:xml:ns:eppcom-1.0" xmlns:mark="urn:ietf:params:xml:ns:mark-1.0"
|
||||
xmlns:smd="urn:ietf:params:xml:ns:signedMark-1.0" xmlns="http://www.w3.org/2001/XMLSchema"
|
||||
elementFormDefault="qualified">
|
||||
|
||||
<!-- Import common element types. -->
|
||||
<import namespace="urn:ietf:params:xml:ns:eppcom-1.0" schemaLocation="eppcom.xsd" />
|
||||
|
||||
<import namespace="urn:ietf:params:xml:ns:mark-1.0" schemaLocation="mark.xsd" />
|
||||
|
||||
<import namespace="urn:ietf:params:xml:ns:signedMark-1.0" schemaLocation="smd.xsd" />
|
||||
|
||||
<annotation>
|
||||
<documentation>
|
||||
Extensible Provisioning Protocol v1.0
|
||||
domain name extension
|
||||
schema
|
||||
for the launch phase processing.
|
||||
</documentation>
|
||||
</annotation>
|
||||
|
||||
<!-- Child elements found in EPP commands. -->
|
||||
<element name="check" type="launch:checkType" />
|
||||
<element name="info" type="launch:infoType" />
|
||||
<element name="create" type="launch:createType" />
|
||||
<element name="update" type="launch:idContainerType" />
|
||||
<element name="delete" type="launch:idContainerType" />
|
||||
|
||||
<!-- Common container of id (identifier) element -->
|
||||
<complexType name="idContainerType">
|
||||
<sequence>
|
||||
<element name="phase" type="launch:phaseType" />
|
||||
<element name="applicationID" type="launch:applicationIDType" />
|
||||
</sequence>
|
||||
</complexType>
|
||||
|
||||
<!-- Definition for application identifier -->
|
||||
<simpleType name="applicationIDType">
|
||||
<restriction base="token" />
|
||||
</simpleType>
|
||||
|
||||
<!-- Definition for launch phase. Name is an optional attribute used to extend
|
||||
the phase type. For example, when using the phase type value of &qt;custom>, the
|
||||
name can be used to specify the custom phase. -->
|
||||
<complexType name="phaseType">
|
||||
<simpleContent>
|
||||
<extension base="launch:phaseTypeValue">
|
||||
<attribute name="name" type="token" />
|
||||
</extension>
|
||||
</simpleContent>
|
||||
</complexType>
|
||||
|
||||
<!-- Enumeration of for launch phase values. -->
|
||||
<simpleType name="phaseTypeValue">
|
||||
<restriction base="token">
|
||||
<enumeration value="sunrise" />
|
||||
<enumeration value="landrush" />
|
||||
<enumeration value="claims" />
|
||||
<enumeration value="open" />
|
||||
<enumeration value="custom" />
|
||||
</restriction>
|
||||
</simpleType>
|
||||
|
||||
|
||||
<!-- Definition for the sunrise code -->
|
||||
<simpleType name="codeValue">
|
||||
<restriction base="token">
|
||||
<minLength value="1" />
|
||||
</restriction>
|
||||
</simpleType>
|
||||
|
||||
<complexType name="codeType">
|
||||
<simpleContent>
|
||||
<extension base="launch:codeValue">
|
||||
<attribute name="validatorID" type="launch:validatorIDType"
|
||||
use="optional" />
|
||||
</extension>
|
||||
</simpleContent>
|
||||
</complexType>
|
||||
|
||||
<!-- Definition for the notice identifier -->
|
||||
<simpleType name="noticeIDValue">
|
||||
<restriction base="token">
|
||||
<minLength value="1" />
|
||||
</restriction>
|
||||
</simpleType>
|
||||
|
||||
<complexType name="noticeIDType">
|
||||
<simpleContent>
|
||||
<extension base="launch:noticeIDValue">
|
||||
<attribute name="validatorID" type="launch:validatorIDType"
|
||||
use="optional" />
|
||||
</extension>
|
||||
</simpleContent>
|
||||
</complexType>
|
||||
|
||||
<!-- Definition for the validator identifier -->
|
||||
<simpleType name="validatorIDType">
|
||||
<restriction base="token">
|
||||
<minLength value="1" />
|
||||
</restriction>
|
||||
</simpleType>
|
||||
|
||||
<!-- Possible status values for sunrise application -->
|
||||
<simpleType name="statusValueType">
|
||||
<restriction base="token">
|
||||
<enumeration value="pendingValidation" />
|
||||
<enumeration value="validated" />
|
||||
<enumeration value="invalid" />
|
||||
<enumeration value="pendingAllocation" />
|
||||
<enumeration value="allocated" />
|
||||
<enumeration value="rejected" />
|
||||
<enumeration value="custom" />
|
||||
</restriction>
|
||||
</simpleType>
|
||||
|
||||
<!-- Status type definition -->
|
||||
<complexType name="statusType">
|
||||
<simpleContent>
|
||||
<extension base="normalizedString">
|
||||
<attribute name="s" type="launch:statusValueType" use="required" />
|
||||
<attribute name="lang" type="language" default="en" />
|
||||
<attribute name="name" type="token" />
|
||||
</extension>
|
||||
</simpleContent>
|
||||
</complexType>
|
||||
|
||||
<!-- codeMark Type that contains an optional code with mark information. -->
|
||||
<complexType name="codeMarkType">
|
||||
<sequence>
|
||||
<element name="code" type="launch:codeType" minOccurs="0" />
|
||||
<element ref="mark:abstractMark" minOccurs="0" />
|
||||
</sequence>
|
||||
</complexType>
|
||||
|
||||
<!-- Child elements for the create command -->
|
||||
<complexType name="createType">
|
||||
<sequence>
|
||||
<element name="phase" type="launch:phaseType" />
|
||||
<choice minOccurs="0">
|
||||
<element name="codeMark" type="launch:codeMarkType" maxOccurs="unbounded" />
|
||||
<element ref="smd:abstractSignedMark" maxOccurs="unbounded" />
|
||||
<element ref="smd:encodedSignedMark" maxOccurs="unbounded" />
|
||||
</choice>
|
||||
<element name="notice" minOccurs="0" type="launch:createNoticeType" />
|
||||
</sequence>
|
||||
<attribute name="type" type="launch:objectType" />
|
||||
</complexType>
|
||||
|
||||
<!-- Type of launch object -->
|
||||
<simpleType name="objectType">
|
||||
<restriction base="token">
|
||||
<enumeration value="application" />
|
||||
<enumeration value="registration" />
|
||||
</restriction>
|
||||
</simpleType>
|
||||
|
||||
|
||||
<!-- Child elements of the create notice element. -->
|
||||
<complexType name="createNoticeType">
|
||||
<sequence>
|
||||
<element name="noticeID" type="launch:noticeIDType" />
|
||||
<element name="notAfter" type="dateTime" />
|
||||
<element name="acceptedDate" type="dateTime" />
|
||||
</sequence>
|
||||
</complexType>
|
||||
|
||||
|
||||
<!-- Child elements of check (Claims Check Command). -->
|
||||
<complexType name="checkType">
|
||||
<sequence>
|
||||
<element name="phase" type="launch:phaseType" />
|
||||
</sequence>
|
||||
<attribute name="type" type="launch:checkFormType" default="claims" />
|
||||
</complexType>
|
||||
|
||||
|
||||
<!-- Type of check form (claims check or availability check) -->
|
||||
<simpleType name="checkFormType">
|
||||
<restriction base="token">
|
||||
<enumeration value="claims" />
|
||||
<enumeration value="avail" />
|
||||
</restriction>
|
||||
</simpleType>
|
||||
|
||||
|
||||
<!-- Child elements of info command. -->
|
||||
<complexType name="infoType">
|
||||
<sequence>
|
||||
<element name="phase" type="launch:phaseType" />
|
||||
<element name="applicationID" type="launch:applicationIDType"
|
||||
minOccurs="0" />
|
||||
</sequence>
|
||||
<attribute name="includeMark" type="boolean" default="false" />
|
||||
</complexType>
|
||||
|
||||
<!-- Child response elements. -->
|
||||
<element name="chkData" type="launch:chkDataType" />
|
||||
<element name="creData" type="launch:idContainerType" />
|
||||
<element name="infData" type="launch:infDataType" />
|
||||
|
||||
<!-- <check> response elements. -->
|
||||
<complexType name="chkDataType">
|
||||
<sequence>
|
||||
<element name="phase" type="launch:phaseType" />
|
||||
<element name="cd" type="launch:cdType" maxOccurs="unbounded" />
|
||||
</sequence>
|
||||
</complexType>
|
||||
|
||||
<complexType name="cdType">
|
||||
<sequence>
|
||||
<element name="name" type="launch:cdNameType" />
|
||||
<element name="claimKey" type="launch:claimKeyType" minOccurs="0" />
|
||||
</sequence>
|
||||
</complexType>
|
||||
|
||||
<complexType name="cdNameType">
|
||||
<simpleContent>
|
||||
<extension base="eppcom:labelType">
|
||||
<attribute name="exists" type="boolean" use="required" />
|
||||
</extension>
|
||||
</simpleContent>
|
||||
</complexType>
|
||||
|
||||
<complexType name="claimKeyType">
|
||||
<simpleContent>
|
||||
<extension base="token">
|
||||
<attribute name="validatorID" type="launch:validatorIDType"
|
||||
use="optional" />
|
||||
</extension>
|
||||
</simpleContent>
|
||||
</complexType>
|
||||
|
||||
<!-- <info> response elements -->
|
||||
<complexType name="infDataType">
|
||||
<sequence>
|
||||
<element name="phase" type="launch:phaseType" />
|
||||
<element name="applicationID" type="launch:applicationIDType"
|
||||
minOccurs="0" />
|
||||
<element name="status" type="launch:statusType" minOccurs="0" />
|
||||
<element ref="mark:abstractMark" minOccurs="0" maxOccurs="unbounded" />
|
||||
</sequence>
|
||||
</complexType>
|
||||
|
||||
</schema>
|
246
java/google/registry/xml/xsd/mark.xsd
Normal file
246
java/google/registry/xml/xsd/mark.xsd
Normal file
|
@ -0,0 +1,246 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!-- Schema extracted from http://tools.ietf.org/html/draft-lozano-tmch-smd -->
|
||||
<schema
|
||||
targetNamespace="urn:ietf:params:xml:ns:mark-1.0"
|
||||
xmlns:mark="urn:ietf:params:xml:ns:mark-1.0"
|
||||
xmlns="http://www.w3.org/2001/XMLSchema"
|
||||
elementFormDefault="qualified">
|
||||
|
||||
<annotation>
|
||||
<documentation>
|
||||
Schema for representing a Trademark, also referred to
|
||||
as Mark.
|
||||
</documentation>
|
||||
</annotation>
|
||||
|
||||
<!--
|
||||
Abstract mark for replacement via substitution.
|
||||
-->
|
||||
<element name="abstractMark" type="mark:abstractMarkType"
|
||||
abstract="true"/>
|
||||
|
||||
<!--
|
||||
<mark:mark> element definition
|
||||
-->
|
||||
<element name="mark" type="mark:markType"
|
||||
substitutionGroup="mark:abstractMark"/>
|
||||
|
||||
<!--
|
||||
Empty type for use in extending for a mark
|
||||
-->
|
||||
<complexType name="abstractMarkType"/>
|
||||
|
||||
<!--
|
||||
<mark:mark> child elements
|
||||
-->
|
||||
<complexType name="markType">
|
||||
<complexContent>
|
||||
<extension base="mark:abstractMarkType">
|
||||
<sequence>
|
||||
<element name="trademark" type="mark:trademarkType"
|
||||
minOccurs="0" maxOccurs="unbounded"/>
|
||||
<element name="treatyOrStatute"
|
||||
type="mark:treatyOrStatuteType" minOccurs="0"
|
||||
maxOccurs="unbounded"/>
|
||||
<element name="court" type="mark:courtType" minOccurs="0"
|
||||
maxOccurs="unbounded"/>
|
||||
</sequence>
|
||||
</extension>
|
||||
</complexContent>
|
||||
</complexType>
|
||||
|
||||
<complexType name="holderType">
|
||||
<sequence>
|
||||
<element name="name" type="token" minOccurs="0"/>
|
||||
<element name="org" type="token" minOccurs="0"/>
|
||||
<element name="addr" type="mark:addrType"/>
|
||||
<element name="voice" type="mark:e164Type" minOccurs="0"/>
|
||||
<element name="fax" type="mark:e164Type" minOccurs="0"/>
|
||||
<element name="email" type="mark:minTokenType" minOccurs="0"/>
|
||||
</sequence>
|
||||
<attribute name="entitlement" type="mark:entitlementType"/>
|
||||
</complexType>
|
||||
|
||||
<complexType name="contactType">
|
||||
<sequence>
|
||||
<element name="name" type="token"/>
|
||||
<element name="org" type="token" minOccurs="0"/>
|
||||
<element name="addr" type="mark:addrType"/>
|
||||
<element name="voice" type="mark:e164Type"/>
|
||||
<element name="fax" type="mark:e164Type" minOccurs="0"/>
|
||||
<element name="email" type="mark:minTokenType"/>
|
||||
</sequence>
|
||||
<attribute name="type" type="mark:contactTypeType"/>
|
||||
</complexType>
|
||||
|
||||
<complexType name="trademarkType">
|
||||
<sequence>
|
||||
<element name="id" type="mark:idType"/>
|
||||
<element name="markName" type="token"/>
|
||||
<element name="holder" type="mark:holderType"
|
||||
maxOccurs="unbounded" />
|
||||
<element name="contact" type="mark:contactType" minOccurs="0"
|
||||
maxOccurs="unbounded"/>
|
||||
<element name="jurisdiction" type="mark:ccType"/>
|
||||
<element name="class" type="integer" minOccurs="0"
|
||||
maxOccurs="unbounded"/>
|
||||
<element name="label" type="mark:labelType" minOccurs="0"
|
||||
maxOccurs="unbounded"/>
|
||||
<element name="goodsAndServices" type="token" />
|
||||
<element name="apId" type="token" minOccurs="0"/>
|
||||
<element name="apDate" type="dateTime" minOccurs="0"/>
|
||||
<element name="regNum" type="token"/>
|
||||
<element name="regDate" type="dateTime"/>
|
||||
<element name="exDate" type="dateTime" minOccurs="0"/>
|
||||
</sequence>
|
||||
</complexType>
|
||||
|
||||
<complexType name="treatyOrStatuteType">
|
||||
<sequence>
|
||||
<element name="id" type="mark:idType"/>
|
||||
<element name="markName" type="token"/>
|
||||
<element name="holder" type="mark:holderType"
|
||||
maxOccurs="unbounded" />
|
||||
<element name="contact" type="mark:contactType" minOccurs="0"
|
||||
maxOccurs="unbounded"/>
|
||||
<element name="protection" type="mark:protectionType"
|
||||
maxOccurs="unbounded"/>
|
||||
<element name="label" type="mark:labelType" minOccurs="0"
|
||||
maxOccurs="unbounded"/>
|
||||
<element name="goodsAndServices" type="token" />
|
||||
<element name="refNum" type="token"/>
|
||||
<element name="proDate" type="dateTime"/>
|
||||
<element name="title" type="token"/>
|
||||
<element name="execDate" type="dateTime"/>
|
||||
</sequence>
|
||||
</complexType>
|
||||
|
||||
<complexType name="courtType">
|
||||
<sequence>
|
||||
<element name="id" type="mark:idType"/>
|
||||
<element name="markName" type="token"/>
|
||||
<element name="holder" type="mark:holderType"
|
||||
maxOccurs="unbounded" />
|
||||
<element name="contact" type="mark:contactType" minOccurs="0"
|
||||
maxOccurs="unbounded"/>
|
||||
<element name="label" type="mark:labelType" minOccurs="0"
|
||||
maxOccurs="unbounded"/>
|
||||
<element name="goodsAndServices" type="token" />
|
||||
<element name="refNum" type="token"/>
|
||||
<element name="proDate" type="dateTime"/>
|
||||
<element name="cc" type="mark:ccType"/>
|
||||
<element name="region" type="token" minOccurs="0"
|
||||
maxOccurs="unbounded"/>
|
||||
<element name="courtName" type="token"/>
|
||||
</sequence>
|
||||
</complexType>
|
||||
|
||||
<!--
|
||||
Address (<mark:addr>) child elements
|
||||
-->
|
||||
<complexType name="addrType">
|
||||
<sequence>
|
||||
<element name="street" type="token" minOccurs="1" maxOccurs="3"/>
|
||||
<element name="city" type="token"/>
|
||||
<element name="sp" type="token" minOccurs="0"/>
|
||||
<element name="pc" type="mark:pcType" minOccurs="0"/>
|
||||
<element name="cc" type="mark:ccType"/>
|
||||
</sequence>
|
||||
</complexType>
|
||||
|
||||
<!--
|
||||
<mark:protection> child elements
|
||||
-->
|
||||
<complexType name="protectionType">
|
||||
<sequence>
|
||||
<element name="cc" type="mark:ccType"/>
|
||||
<element name="region" type="token" minOccurs="0"/>
|
||||
<element name="ruling" type="mark:ccType"
|
||||
minOccurs="0" maxOccurs="unbounded"/>
|
||||
</sequence>
|
||||
</complexType>
|
||||
|
||||
<!--
|
||||
Postal code definition
|
||||
-->
|
||||
<simpleType name="pcType">
|
||||
<restriction base="token">
|
||||
<maxLength value="16"/>
|
||||
</restriction>
|
||||
</simpleType>
|
||||
|
||||
<!--
|
||||
Country code definition
|
||||
-->
|
||||
<simpleType name="ccType">
|
||||
<restriction base="token">
|
||||
<length value="2"/>
|
||||
</restriction>
|
||||
</simpleType>
|
||||
|
||||
<!--
|
||||
Phone number with extension definition
|
||||
-->
|
||||
<complexType name="e164Type">
|
||||
<simpleContent>
|
||||
<extension base="mark:e164StringType">
|
||||
<attribute name="x" type="token"/>
|
||||
</extension>
|
||||
</simpleContent>
|
||||
</complexType>
|
||||
|
||||
<!--
|
||||
Phone number with extension definition
|
||||
-->
|
||||
<simpleType name="e164StringType">
|
||||
<restriction base="token">
|
||||
<pattern value="(\+[0-9]{1,3}\.[0-9]{1,14})?"/>
|
||||
<maxLength value="17"/>
|
||||
</restriction>
|
||||
</simpleType>
|
||||
|
||||
<!--
|
||||
Id type definition
|
||||
-->
|
||||
<simpleType name="idType">
|
||||
<restriction base="token">
|
||||
<pattern value="\d+-\d+"/>
|
||||
</restriction>
|
||||
</simpleType>
|
||||
|
||||
<!--
|
||||
DNS label type definition
|
||||
-->
|
||||
<simpleType name="labelType">
|
||||
<restriction base="token">
|
||||
<minLength value="1"/>
|
||||
<maxLength value="63"/>
|
||||
<pattern value="[a-zA-Z0-9]([a-zA-Z0-9\-]*[a-zA-Z0-9])?"/>
|
||||
</restriction>
|
||||
</simpleType>
|
||||
|
||||
<!--
|
||||
Type used for email addresses
|
||||
-->
|
||||
<simpleType name="minTokenType">
|
||||
<restriction base="token">
|
||||
<minLength value="1"/>
|
||||
</restriction>
|
||||
</simpleType>
|
||||
|
||||
<simpleType name="entitlementType">
|
||||
<restriction base="token">
|
||||
<enumeration value="owner"/>
|
||||
<enumeration value="assignee"/>
|
||||
<enumeration value="licensee"/>
|
||||
</restriction>
|
||||
</simpleType>
|
||||
|
||||
<simpleType name="contactTypeType">
|
||||
<restriction base="token">
|
||||
<enumeration value="owner"/>
|
||||
<enumeration value="agent"/>
|
||||
<enumeration value="thirdparty"/>
|
||||
</restriction>
|
||||
</simpleType>
|
||||
</schema>
|
26
java/google/registry/xml/xsd/metadata.xsd
Normal file
26
java/google/registry/xml/xsd/metadata.xsd
Normal file
|
@ -0,0 +1,26 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<schema xmlns="http://www.w3.org/2001/XMLSchema" xmlns:metadata="urn:google:params:xml:ns:metadata-1.0"
|
||||
targetNamespace="urn:google:params:xml:ns:metadata-1.0" elementFormDefault="qualified">
|
||||
|
||||
<annotation>
|
||||
<documentation>
|
||||
Extensible Provisioning Protocol v1.0
|
||||
Domain name extension schema for annotating EPP operations with metadata.
|
||||
This is a proprietary, internal-only, non-public extension only for use
|
||||
inside the Google registry.
|
||||
</documentation>
|
||||
</annotation>
|
||||
|
||||
<!-- Child elements found in EPP commands. -->
|
||||
<element name="metadata" type="metadata:metadata" />
|
||||
|
||||
<!-- Child elements for all commands -->
|
||||
<complexType name="metadata">
|
||||
<all>
|
||||
<element name="reason" type="string" minOccurs="0" />
|
||||
<element name="requestedByRegistrar" type="boolean" minOccurs="1" />
|
||||
<element name="anchorTenant" type="boolean" minOccurs="0" default="false" />
|
||||
</all>
|
||||
</complexType>
|
||||
|
||||
</schema>
|
96
java/google/registry/xml/xsd/rde-contact.xsd
Normal file
96
java/google/registry/xml/xsd/rde-contact.xsd
Normal file
|
@ -0,0 +1,96 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<schema targetNamespace="urn:ietf:params:xml:ns:rdeContact-1.0"
|
||||
xmlns:rdeContact="urn:ietf:params:xml:ns:rdeContact-1.0"
|
||||
xmlns:rde="urn:ietf:params:xml:ns:rde-1.0"
|
||||
xmlns:contact="urn:ietf:params:xml:ns:contact-1.0"
|
||||
xmlns:eppcom="urn:ietf:params:xml:ns:eppcom-1.0"
|
||||
xmlns="http://www.w3.org/2001/XMLSchema"
|
||||
elementFormDefault="qualified">
|
||||
|
||||
<!-- Import common element types. -->
|
||||
<import namespace="urn:ietf:params:xml:ns:eppcom-1.0"
|
||||
schemaLocation="eppcom.xsd"/>
|
||||
<import namespace="urn:ietf:params:xml:ns:contact-1.0"
|
||||
schemaLocation="contact.xsd"/>
|
||||
<import namespace="urn:ietf:params:xml:ns:rde-1.0"
|
||||
schemaLocation="rde.xsd"/>
|
||||
|
||||
<annotation>
|
||||
<documentation>
|
||||
Registry Data Escrow contact provisioning schema
|
||||
</documentation>
|
||||
</annotation>
|
||||
|
||||
<element name="abstractContact"
|
||||
type="rdeContact:abstractContentType"
|
||||
substitutionGroup="rde:content" abstract="true"/>
|
||||
<element name="contact"
|
||||
substitutionGroup="rdeContact:abstractContact"/>
|
||||
<element name="delete"
|
||||
type="rdeContact:deleteType"
|
||||
substitutionGroup="rde:delete"/>
|
||||
|
||||
<!-- Contact Type -->
|
||||
<complexType name="abstractContentType">
|
||||
<complexContent>
|
||||
<extension base="rde:contentType">
|
||||
<sequence>
|
||||
<element name="id"
|
||||
type="eppcom:clIDType"/>
|
||||
<element name="roid"
|
||||
type="eppcom:roidType"/>
|
||||
<element name="status"
|
||||
type="contact:statusType" maxOccurs="7"/>
|
||||
<element name="postalInfo"
|
||||
type="contact:postalInfoType" maxOccurs="2"/>
|
||||
<element name="voice"
|
||||
type="contact:e164Type" minOccurs="0"/>
|
||||
<element name="fax"
|
||||
type="contact:e164Type" minOccurs="0"/>
|
||||
<element name="email"
|
||||
type="eppcom:minTokenType"/>
|
||||
<element name="clID"
|
||||
type="eppcom:clIDType"/>
|
||||
<element name="crRr"
|
||||
type="rde:rrType"/>
|
||||
<element name="crDate"
|
||||
type="dateTime"/>
|
||||
<element name="upRr"
|
||||
type="rde:rrType" minOccurs="0"/>
|
||||
<element name="upDate"
|
||||
type="dateTime" minOccurs="0"/>
|
||||
<element name="trDate"
|
||||
type="dateTime" minOccurs="0"/>
|
||||
<element name="trnData"
|
||||
type="rdeContact:transferDataType" minOccurs="0"/>
|
||||
<element name="disclose"
|
||||
type="contact:discloseType" minOccurs="0"/>
|
||||
</sequence>
|
||||
</extension>
|
||||
</complexContent>
|
||||
</complexType>
|
||||
|
||||
<complexType name="transferDataType">
|
||||
<sequence>
|
||||
<element name="trStatus" type="eppcom:trStatusType"/>
|
||||
<element name="reRr" type="rde:rrType"/>
|
||||
<element name="reDate" type="dateTime"/>
|
||||
<element name="acRr" type="rde:rrType"/>
|
||||
<element name="acDate" type="dateTime"/>
|
||||
</sequence>
|
||||
</complexType>
|
||||
|
||||
|
||||
<!-- Delete Type -->
|
||||
<complexType name="deleteType">
|
||||
<complexContent>
|
||||
<extension base="rde:deleteType">
|
||||
<sequence>
|
||||
<element name="id"
|
||||
type="eppcom:clIDType" minOccurs="0"
|
||||
maxOccurs="unbounded"/>
|
||||
</sequence>
|
||||
</extension>
|
||||
</complexContent>
|
||||
</complexType>
|
||||
</schema>
|
121
java/google/registry/xml/xsd/rde-domain.xsd
Normal file
121
java/google/registry/xml/xsd/rde-domain.xsd
Normal file
|
@ -0,0 +1,121 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<schema targetNamespace="urn:ietf:params:xml:ns:rdeDomain-1.0"
|
||||
xmlns:rdeDomain="urn:ietf:params:xml:ns:rdeDomain-1.0"
|
||||
xmlns:rde="urn:ietf:params:xml:ns:rde-1.0"
|
||||
xmlns:rdeIDN="urn:ietf:params:xml:ns:rdeIDN-1.0"
|
||||
xmlns:rgp="urn:ietf:params:xml:ns:rgp-1.0"
|
||||
xmlns:secDNS="urn:ietf:params:xml:ns:secDNS-1.1"
|
||||
xmlns:domain="urn:ietf:params:xml:ns:domain-1.0"
|
||||
xmlns:eppcom="urn:ietf:params:xml:ns:eppcom-1.0"
|
||||
xmlns="http://www.w3.org/2001/XMLSchema"
|
||||
elementFormDefault="qualified">
|
||||
|
||||
<import namespace="urn:ietf:params:xml:ns:eppcom-1.0"
|
||||
schemaLocation="eppcom.xsd"/>
|
||||
<import namespace="urn:ietf:params:xml:ns:domain-1.0"
|
||||
schemaLocation="domain.xsd"/>
|
||||
<import namespace="urn:ietf:params:xml:ns:secDNS-1.1"
|
||||
schemaLocation="secdns.xsd"/>
|
||||
<import namespace="urn:ietf:params:xml:ns:rgp-1.0"
|
||||
schemaLocation="rgp.xsd"/>
|
||||
<import namespace="urn:ietf:params:xml:ns:rde-1.0"
|
||||
schemaLocation="rde.xsd"/>
|
||||
<import namespace="urn:ietf:params:xml:ns:rdeIDN-1.0"
|
||||
schemaLocation="rde-idn.xsd"/>
|
||||
|
||||
<annotation>
|
||||
<documentation>
|
||||
Registry Data Escrow Domain provisioning schema
|
||||
</documentation>
|
||||
</annotation>
|
||||
|
||||
<element name="abstractDomain"
|
||||
type="rdeDomain:abstractContentType"
|
||||
substitutionGroup="rde:content" abstract="true"/>
|
||||
<element name="domain"
|
||||
substitutionGroup="rdeDomain:abstractDomain"/>
|
||||
<element name="delete"
|
||||
type="rdeDomain:deleteType"
|
||||
substitutionGroup="rde:delete"/>
|
||||
|
||||
<!-- Content Type -->
|
||||
<complexType name="abstractContentType">
|
||||
<complexContent>
|
||||
<extension base="rde:contentType">
|
||||
<sequence>
|
||||
<element name="name"
|
||||
type="eppcom:labelType"/>
|
||||
<element name="roid"
|
||||
type="eppcom:roidType"/>
|
||||
<element name="uName"
|
||||
type="eppcom:labelType" minOccurs="0"/>
|
||||
<element name="idnTableId"
|
||||
type="rdeIDN:idType" minOccurs="0"/>
|
||||
<element name="originalName"
|
||||
type="eppcom:labelType" minOccurs="0"/>
|
||||
<element name="status"
|
||||
type="domain:statusType" maxOccurs="11"/>
|
||||
<element name="rgpStatus"
|
||||
type="rgp:statusType" minOccurs="0"
|
||||
maxOccurs="unbounded"/>
|
||||
<element name="registrant"
|
||||
type="eppcom:clIDType" minOccurs="0"/>
|
||||
<element name="contact"
|
||||
type="domain:contactType"
|
||||
minOccurs="0" maxOccurs="unbounded"/>
|
||||
<element name="ns"
|
||||
type="domain:nsType" minOccurs="0"/>
|
||||
<element name="clID"
|
||||
type="eppcom:clIDType"/>
|
||||
<element name="crRr"
|
||||
type="rde:rrType"/>
|
||||
<element name="crDate"
|
||||
type="dateTime" minOccurs="0"/>
|
||||
<element name="exDate"
|
||||
type="dateTime" minOccurs="0"/>
|
||||
<element name="upRr"
|
||||
type="rde:rrType" minOccurs="0"/>
|
||||
<element name="upDate"
|
||||
type="dateTime" minOccurs="0"/>
|
||||
<element name="secDNS"
|
||||
type="secDNS:dsOrKeyType" minOccurs="0"/>
|
||||
<element name="trDate"
|
||||
type="dateTime" minOccurs="0"/>
|
||||
<element name="trnData"
|
||||
type="rdeDomain:transferDataType"
|
||||
minOccurs="0"/>
|
||||
</sequence>
|
||||
</extension>
|
||||
</complexContent>
|
||||
</complexType>
|
||||
|
||||
<complexType name="transferDataType">
|
||||
<sequence>
|
||||
<element name="trStatus"
|
||||
type="eppcom:trStatusType"/>
|
||||
<element name="reRr"
|
||||
type="rde:rrType"/>
|
||||
<element name="reDate"
|
||||
type="dateTime"/>
|
||||
<element name="acRr"
|
||||
type="rde:rrType"/>
|
||||
<element name="acDate"
|
||||
type="dateTime"/>
|
||||
<element name="exDate"
|
||||
type="dateTime" minOccurs="0"/>
|
||||
</sequence>
|
||||
</complexType>
|
||||
|
||||
<!-- Delete Type -->
|
||||
<complexType name="deleteType">
|
||||
<complexContent>
|
||||
<extension base="rde:deleteType">
|
||||
<sequence>
|
||||
<element name="name"
|
||||
type="eppcom:labelType" minOccurs="0"
|
||||
maxOccurs="unbounded"/>
|
||||
</sequence>
|
||||
</extension>
|
||||
</complexContent>
|
||||
</complexType>
|
||||
</schema>
|
50
java/google/registry/xml/xsd/rde-eppparams.xsd
Normal file
50
java/google/registry/xml/xsd/rde-eppparams.xsd
Normal file
|
@ -0,0 +1,50 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<schema targetNamespace="urn:ietf:params:xml:ns:rdeEppParams-1.0"
|
||||
xmlns:rdeEppParams="urn:ietf:params:xml:ns:rdeEppParams-1.0"
|
||||
xmlns:rde="urn:ietf:params:xml:ns:rde-1.0"
|
||||
xmlns:epp="urn:ietf:params:xml:ns:epp-1.0"
|
||||
xmlns:eppcom="urn:ietf:params:xml:ns:eppcom-1.0"
|
||||
xmlns="http://www.w3.org/2001/XMLSchema"
|
||||
elementFormDefault="qualified">
|
||||
|
||||
<import namespace="urn:ietf:params:xml:ns:epp-1.0"
|
||||
schemaLocation="epp.xsd"/>
|
||||
<import namespace="urn:ietf:params:xml:ns:eppcom-1.0"
|
||||
schemaLocation="eppcom.xsd"/>
|
||||
<import namespace="urn:ietf:params:xml:ns:rde-1.0"
|
||||
schemaLocation="rde.xsd"/>
|
||||
|
||||
<annotation>
|
||||
<documentation>
|
||||
Registry Data Escrow EPP Parameters schema
|
||||
</documentation>
|
||||
</annotation>
|
||||
|
||||
<!-- Content Type -->
|
||||
<element name="eppParams"
|
||||
substitutionGroup="rdeEppParams:abstractEppParams"/>
|
||||
|
||||
<!-- Abstract Content Type -->
|
||||
<element name="abstractEppParams"
|
||||
type="rdeEppParams:abstractContentType"
|
||||
substitutionGroup="rde:content" abstract="true"/>
|
||||
<complexType name="abstractContentType">
|
||||
<complexContent>
|
||||
<extension base="rde:contentType">
|
||||
<sequence>
|
||||
<element name="version" type="epp:versionType"
|
||||
maxOccurs="unbounded"/>
|
||||
<element name="lang"
|
||||
type="language" maxOccurs="unbounded"/>
|
||||
<element name="objURI"
|
||||
type="anyURI" maxOccurs="unbounded"/>
|
||||
<element name="svcExtension"
|
||||
type="epp:extURIType"
|
||||
minOccurs="0"/>
|
||||
<element name="dcp"
|
||||
type="epp:dcpType"/>
|
||||
</sequence>
|
||||
</extension>
|
||||
</complexContent>
|
||||
</complexType>
|
||||
</schema>
|
44
java/google/registry/xml/xsd/rde-header.xsd
Normal file
44
java/google/registry/xml/xsd/rde-header.xsd
Normal file
|
@ -0,0 +1,44 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<schema targetNamespace="urn:ietf:params:xml:ns:rdeHeader-1.0"
|
||||
xmlns:rdeHeader="urn:ietf:params:xml:ns:rdeHeader-1.0"
|
||||
xmlns:rde="urn:ietf:params:xml:ns:rde-1.0"
|
||||
xmlns:eppcom="urn:ietf:params:xml:ns:eppcom-1.0"
|
||||
xmlns="http://www.w3.org/2001/XMLSchema"
|
||||
elementFormDefault="qualified">
|
||||
|
||||
<import namespace="urn:ietf:params:xml:ns:eppcom-1.0"
|
||||
schemaLocation="eppcom.xsd"/>
|
||||
<import namespace="urn:ietf:params:xml:ns:rde-1.0"
|
||||
schemaLocation="rde.xsd"/>
|
||||
|
||||
<annotation>
|
||||
<documentation>
|
||||
Registry Data Escrow Header schema
|
||||
</documentation>
|
||||
</annotation>
|
||||
|
||||
<!-- Root Element -->
|
||||
<element name="header" type="rdeHeader:contentType"
|
||||
substitutionGroup="rde:content"/>
|
||||
|
||||
<!-- Content Type -->
|
||||
<complexType name="contentType">
|
||||
<complexContent>
|
||||
<extension base="rde:contentType">
|
||||
<sequence>
|
||||
<element name="tld" type="eppcom:labelType"/>
|
||||
<element name="count" type="rdeHeader:countType"
|
||||
maxOccurs="unbounded"/>
|
||||
</sequence>
|
||||
</extension>
|
||||
</complexContent>
|
||||
</complexType>
|
||||
|
||||
<complexType name="countType">
|
||||
<simpleContent>
|
||||
<extension base="long">
|
||||
<attribute name="uri" type="anyURI"/>
|
||||
</extension>
|
||||
</simpleContent>
|
||||
</complexType>
|
||||
</schema>
|
73
java/google/registry/xml/xsd/rde-host.xsd
Normal file
73
java/google/registry/xml/xsd/rde-host.xsd
Normal file
|
@ -0,0 +1,73 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<schema targetNamespace="urn:ietf:params:xml:ns:rdeHost-1.0"
|
||||
xmlns:rdeHost="urn:ietf:params:xml:ns:rdeHost-1.0"
|
||||
xmlns:rde="urn:ietf:params:xml:ns:rde-1.0"
|
||||
xmlns:host="urn:ietf:params:xml:ns:host-1.0"
|
||||
xmlns:eppcom="urn:ietf:params:xml:ns:eppcom-1.0"
|
||||
xmlns="http://www.w3.org/2001/XMLSchema"
|
||||
elementFormDefault="qualified">
|
||||
|
||||
<import namespace="urn:ietf:params:xml:ns:eppcom-1.0"
|
||||
schemaLocation="eppcom.xsd"/>
|
||||
<import namespace="urn:ietf:params:xml:ns:host-1.0"
|
||||
schemaLocation="host.xsd"/>
|
||||
<import namespace="urn:ietf:params:xml:ns:rde-1.0"
|
||||
schemaLocation="rde.xsd"/>
|
||||
|
||||
<annotation>
|
||||
<documentation>
|
||||
Registry Data Escrow Host provisioning schema
|
||||
</documentation>
|
||||
</annotation>
|
||||
|
||||
<element name="abstractHost" type="rdeHost:abstractContentType"
|
||||
substitutionGroup="rde:content" abstract="true"/>
|
||||
<element name="host" substitutionGroup="rdeHost:abstractHost" />
|
||||
<element name="delete" type="rdeHost:deleteType"
|
||||
substitutionGroup="rde:delete"/>
|
||||
|
||||
<!-- Content Type -->
|
||||
<complexType name="abstractContentType">
|
||||
<complexContent>
|
||||
<extension base="rde:contentType">
|
||||
<sequence>
|
||||
<element name="name"
|
||||
type="eppcom:labelType"/>
|
||||
<element name="roid"
|
||||
type="eppcom:roidType"/>
|
||||
<element name="status"
|
||||
type="host:statusType" maxOccurs="7"/>
|
||||
<element name="addr"
|
||||
type="host:addrType" minOccurs="0"
|
||||
maxOccurs="unbounded"/>
|
||||
<element name="clID"
|
||||
type="eppcom:clIDType"/>
|
||||
<element name="crRr"
|
||||
type="rde:rrType"/>
|
||||
<element name="crDate"
|
||||
type="dateTime"/>
|
||||
<element name="upRr"
|
||||
type="rde:rrType" minOccurs="0"/>
|
||||
<element name="upDate"
|
||||
type="dateTime" minOccurs="0"/>
|
||||
<element name="trDate"
|
||||
type="dateTime" minOccurs="0"/>
|
||||
</sequence>
|
||||
</extension>
|
||||
</complexContent>
|
||||
</complexType>
|
||||
|
||||
<!-- Delete Type -->
|
||||
<complexType name="deleteType">
|
||||
<complexContent>
|
||||
<extension base="rde:deleteType">
|
||||
<choice minOccurs="0" maxOccurs="unbounded">
|
||||
<element name="name"
|
||||
type="eppcom:labelType"/>
|
||||
<element name="roid"
|
||||
type="eppcom:roidType"/>
|
||||
</choice>
|
||||
</extension>
|
||||
</complexContent>
|
||||
</complexType>
|
||||
</schema>
|
53
java/google/registry/xml/xsd/rde-idn.xsd
Normal file
53
java/google/registry/xml/xsd/rde-idn.xsd
Normal file
|
@ -0,0 +1,53 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<schema targetNamespace="urn:ietf:params:xml:ns:rdeIDN-1.0"
|
||||
xmlns:rdeIDN="urn:ietf:params:xml:ns:rdeIDN-1.0"
|
||||
xmlns:rde="urn:ietf:params:xml:ns:rde-1.0"
|
||||
xmlns="http://www.w3.org/2001/XMLSchema"
|
||||
elementFormDefault="qualified">
|
||||
|
||||
<import namespace="urn:ietf:params:xml:ns:rde-1.0"
|
||||
schemaLocation="rde.xsd"/>
|
||||
|
||||
<annotation>
|
||||
<documentation>
|
||||
Registry Data Escrow IDN provisioning schema
|
||||
</documentation>
|
||||
</annotation>
|
||||
|
||||
<element name="idnTableRef" type="rdeIDN:contentType"
|
||||
substitutionGroup="rde:content"/>
|
||||
<element name="delete" type="rdeIDN:deleteType"
|
||||
substitutionGroup="rde:delete"/>
|
||||
|
||||
<!-- Content Types -->
|
||||
<complexType name="contentType">
|
||||
<complexContent>
|
||||
<extension base="rde:contentType">
|
||||
<sequence>
|
||||
<element name="url" type="anyURI"/>
|
||||
<element name="urlPolicy" type="anyURI"/>
|
||||
</sequence>
|
||||
<attribute name="id" type="rdeIDN:idType" use="required"/>
|
||||
</extension>
|
||||
</complexContent>
|
||||
</complexType>
|
||||
|
||||
<complexType name="deleteType">
|
||||
<complexContent>
|
||||
<extension base="rde:deleteType">
|
||||
<sequence>
|
||||
<element name="id" type="rdeIDN:idType"/>
|
||||
</sequence>
|
||||
</extension>
|
||||
</complexContent>
|
||||
</complexType>
|
||||
|
||||
<!-- Simple Types -->
|
||||
<simpleType name="idType">
|
||||
<restriction base="token">
|
||||
<minLength value="1"/>
|
||||
<maxLength value="64"/>
|
||||
</restriction>
|
||||
</simpleType>
|
||||
|
||||
</schema>
|
80
java/google/registry/xml/xsd/rde-nndn.xsd
Normal file
80
java/google/registry/xml/xsd/rde-nndn.xsd
Normal file
|
@ -0,0 +1,80 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<schema targetNamespace="urn:ietf:params:xml:ns:rdeNNDN-1.0"
|
||||
xmlns:rdeNNDN="urn:ietf:params:xml:ns:rdeNNDN-1.0"
|
||||
xmlns:rde="urn:ietf:params:xml:ns:rde-1.0"
|
||||
xmlns:rdeIDN="urn:ietf:params:xml:ns:rdeIDN-1.0"
|
||||
xmlns:eppcom="urn:ietf:params:xml:ns:eppcom-1.0"
|
||||
xmlns="http://www.w3.org/2001/XMLSchema"
|
||||
elementFormDefault="qualified">
|
||||
|
||||
<import namespace="urn:ietf:params:xml:ns:eppcom-1.0"
|
||||
schemaLocation="eppcom.xsd"/>
|
||||
<import namespace="urn:ietf:params:xml:ns:rde-1.0"
|
||||
schemaLocation="rde.xsd"/>
|
||||
<import namespace="urn:ietf:params:xml:ns:rdeIDN-1.0"
|
||||
schemaLocation="rde-idn.xsd"/>
|
||||
|
||||
<annotation>
|
||||
<documentation>
|
||||
Registry Data Escrow NNDN provisioning schema
|
||||
</documentation>
|
||||
</annotation>
|
||||
|
||||
<element name="abstractNNDN" type="rdeNNDN:abstractContentType"
|
||||
substitutionGroup="rde:content" abstract="true"/>
|
||||
<element name="NNDN" substitutionGroup="rdeNNDN:abstractNNDN"/>
|
||||
<element name="delete" type="rdeNNDN:deleteType"
|
||||
substitutionGroup="rde:delete"/>
|
||||
|
||||
<!-- Content Type -->
|
||||
<complexType name="abstractContentType">
|
||||
<complexContent>
|
||||
<extension base="rde:contentType">
|
||||
<sequence>
|
||||
<element name="aName"
|
||||
type="eppcom:labelType"/>
|
||||
<element name="uName"
|
||||
type="eppcom:labelType" minOccurs="0"/>
|
||||
<element name="idnTableId"
|
||||
type="rdeIDN:idType" minOccurs="0"/>
|
||||
<element name="originalName"
|
||||
type="eppcom:labelType" minOccurs="0"/>
|
||||
<element name="nameState"
|
||||
type="rdeNNDN:nameState"/>
|
||||
<element name="crDate"
|
||||
type="dateTime"/>
|
||||
</sequence>
|
||||
</extension>
|
||||
</complexContent>
|
||||
</complexType>
|
||||
|
||||
<simpleType name="nameStateValue">
|
||||
<restriction base="token">
|
||||
<enumeration value="withheld" />
|
||||
<enumeration value="blocked" />
|
||||
<enumeration value="mirrored" />
|
||||
</restriction>
|
||||
</simpleType>
|
||||
|
||||
<complexType name="nameState">
|
||||
<simpleContent>
|
||||
<extension base="rdeNNDN:nameStateValue">
|
||||
<attribute name="mirroringNS"
|
||||
type="boolean" default="true"/>
|
||||
</extension>
|
||||
</simpleContent>
|
||||
</complexType>
|
||||
|
||||
<!-- Delete Type -->
|
||||
<complexType name="deleteType">
|
||||
<complexContent>
|
||||
<extension base="rde:deleteType">
|
||||
<sequence>
|
||||
<element name="aName"
|
||||
type="eppcom:labelType" minOccurs="0"
|
||||
maxOccurs="unbounded"/>
|
||||
</sequence>
|
||||
</extension>
|
||||
</complexContent>
|
||||
</complexType>
|
||||
</schema>
|
48
java/google/registry/xml/xsd/rde-notification.xsd
Normal file
48
java/google/registry/xml/xsd/rde-notification.xsd
Normal file
|
@ -0,0 +1,48 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<schema targetNamespace="urn:ietf:params:xml:ns:rdeNotification-1.0"
|
||||
xmlns:rdeNotification="urn:ietf:params:xml:ns:rdeNotification-1.0"
|
||||
xmlns:rdeReport="urn:ietf:params:xml:ns:rdeReport-1.0"
|
||||
xmlns="http://www.w3.org/2001/XMLSchema"
|
||||
elementFormDefault="qualified">
|
||||
|
||||
<import namespace="urn:ietf:params:xml:ns:rdeReport-1.0"
|
||||
schemaLocation="rde-report.xsd"/>
|
||||
|
||||
<annotation>
|
||||
<documentation>
|
||||
Registry Data Escrow Notification schema
|
||||
</documentation>
|
||||
</annotation>
|
||||
|
||||
<!-- Root Element -->
|
||||
<element name="notification" type="rdeNotification:notificationType"/>
|
||||
|
||||
<!-- Notification -->
|
||||
<complexType name="notificationType">
|
||||
<sequence>
|
||||
<element name="deaName" type="rdeNotification:nameType"/>
|
||||
<element name="version" type="unsignedShort"/>
|
||||
<element name="repDate" type="date"/>
|
||||
<element name="status" type="rdeNotification:statusType"/>
|
||||
<element name="reDate" type="dateTime" minOccurs="0"/>
|
||||
<element name="vaDate" type="dateTime" minOccurs="0"/>
|
||||
<element name="lastFullDate" type="date" minOccurs="0"/>
|
||||
<element ref="rdeReport:report" minOccurs="0"/>
|
||||
</sequence>
|
||||
</complexType>
|
||||
|
||||
<simpleType name="nameType">
|
||||
<restriction base="normalizedString">
|
||||
<minLength value="1" />
|
||||
<maxLength value="255" />
|
||||
</restriction>
|
||||
</simpleType>
|
||||
|
||||
<simpleType name="statusType">
|
||||
<restriction base="token">
|
||||
<enumeration value="DVPN"/>
|
||||
<enumeration value="DVFN"/>
|
||||
<enumeration value="DRFN"/>
|
||||
</restriction>
|
||||
</simpleType>
|
||||
</schema>
|
28
java/google/registry/xml/xsd/rde-policy.xsd
Normal file
28
java/google/registry/xml/xsd/rde-policy.xsd
Normal file
|
@ -0,0 +1,28 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<schema targetNamespace="urn:ietf:params:xml:ns:rdePolicy-1.0"
|
||||
xmlns:rdePolicy="urn:ietf:params:xml:ns:rdePolicy-1.0"
|
||||
xmlns:rde="urn:ietf:params:xml:ns:rde-1.0"
|
||||
xmlns="http://www.w3.org/2001/XMLSchema"
|
||||
elementFormDefault="qualified">
|
||||
|
||||
<import namespace="urn:ietf:params:xml:ns:rde-1.0"
|
||||
schemaLocation="rde.xsd"/>
|
||||
|
||||
<annotation>
|
||||
<documentation>
|
||||
Registry Data Escrow Policy schema
|
||||
</documentation>
|
||||
</annotation>
|
||||
|
||||
<element name="policy" type="rdePolicy:policyType"
|
||||
substitutionGroup="rde:content"/>
|
||||
|
||||
<complexType name="policyType">
|
||||
<complexContent>
|
||||
<extension base="rde:contentType">
|
||||
<attribute name="scope" type="token" use="required"/>
|
||||
<attribute name="element" type="anyURI" use="required"/>
|
||||
</extension>
|
||||
</complexContent>
|
||||
</complexType>
|
||||
</schema>
|
165
java/google/registry/xml/xsd/rde-registrar.xsd
Normal file
165
java/google/registry/xml/xsd/rde-registrar.xsd
Normal file
|
@ -0,0 +1,165 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<schema targetNamespace="urn:ietf:params:xml:ns:rdeRegistrar-1.0"
|
||||
xmlns:rdeRegistrar="urn:ietf:params:xml:ns:rdeRegistrar-1.0"
|
||||
xmlns:rde="urn:ietf:params:xml:ns:rde-1.0"
|
||||
xmlns:contact="urn:ietf:params:xml:ns:contact-1.0"
|
||||
xmlns:domain="urn:ietf:params:xml:ns:domain-1.0"
|
||||
xmlns:eppcom="urn:ietf:params:xml:ns:eppcom-1.0"
|
||||
xmlns="http://www.w3.org/2001/XMLSchema"
|
||||
elementFormDefault="qualified">
|
||||
|
||||
<!-- Import common element types. -->
|
||||
<import namespace="urn:ietf:params:xml:ns:eppcom-1.0"
|
||||
schemaLocation="eppcom.xsd"/>
|
||||
<import namespace="urn:ietf:params:xml:ns:domain-1.0"
|
||||
schemaLocation="domain.xsd"/>
|
||||
<import namespace="urn:ietf:params:xml:ns:contact-1.0"
|
||||
schemaLocation="contact.xsd"/>
|
||||
<import namespace="urn:ietf:params:xml:ns:rde-1.0"
|
||||
schemaLocation="rde.xsd"/>
|
||||
|
||||
<annotation>
|
||||
<documentation>
|
||||
Registry Data Escrow registrar provisioning schema
|
||||
</documentation>
|
||||
</annotation>
|
||||
|
||||
<element name="abstractRegistrar"
|
||||
type="rdeRegistrar:abstractContentType"
|
||||
substitutionGroup="rde:content" abstract="true"/>
|
||||
<element name="registrar"
|
||||
substitutionGroup="rdeRegistrar:abstractRegistrar"/>
|
||||
<element name="delete" type="rdeRegistrar:deleteType"
|
||||
substitutionGroup="rde:delete"/>
|
||||
|
||||
<!-- Content Type -->
|
||||
<complexType name="abstractContentType">
|
||||
<complexContent>
|
||||
<extension base="rde:contentType">
|
||||
<sequence>
|
||||
<element name="id"
|
||||
type="eppcom:clIDType"/>
|
||||
<element name="name"
|
||||
type="rdeRegistrar:nameType"/>
|
||||
<element name="gurid"
|
||||
type="positiveInteger" minOccurs="0"/>
|
||||
<element name="status"
|
||||
type="rdeRegistrar:statusType"/>
|
||||
<element name="postalInfo"
|
||||
type="rdeRegistrar:postalInfoType"
|
||||
maxOccurs="2"/>
|
||||
<element name="voice"
|
||||
type="contact:e164Type" minOccurs="0"/>
|
||||
<element name="fax"
|
||||
type="contact:e164Type" minOccurs="0"/>
|
||||
<element name="email"
|
||||
type="eppcom:minTokenType"/>
|
||||
<element name="url"
|
||||
type="anyURI" minOccurs="0"/>
|
||||
<element name="whoisInfo"
|
||||
type="rdeRegistrar:whoisInfoType" minOccurs="0"/>
|
||||
<element name="crDate"
|
||||
type="dateTime"/>
|
||||
<element name="upDate"
|
||||
type="dateTime" minOccurs="0"/>
|
||||
</sequence>
|
||||
</extension>
|
||||
</complexContent>
|
||||
</complexType>
|
||||
|
||||
<simpleType name="nameType">
|
||||
<restriction base="normalizedString">
|
||||
<minLength value="1" />
|
||||
<maxLength value="255" />
|
||||
</restriction>
|
||||
</simpleType>
|
||||
|
||||
<simpleType name="statusType">
|
||||
<restriction base="token">
|
||||
<enumeration value="ok"/>
|
||||
<enumeration value="readonly"/>
|
||||
<enumeration value="terminated"/>
|
||||
</restriction>
|
||||
</simpleType>
|
||||
|
||||
<complexType name="postalInfoType">
|
||||
<sequence>
|
||||
<element name="addr"
|
||||
type="rdeRegistrar:addrType" />
|
||||
</sequence>
|
||||
<attribute name="type"
|
||||
type="rdeRegistrar:postalInfoEnumType"
|
||||
use="required" />
|
||||
</complexType>
|
||||
|
||||
<simpleType name="postalInfoEnumType">
|
||||
<restriction base="token">
|
||||
<enumeration value="loc" />
|
||||
<enumeration value="int" />
|
||||
</restriction>
|
||||
</simpleType>
|
||||
|
||||
<complexType name="addrType">
|
||||
<sequence>
|
||||
<element name="street"
|
||||
type="rdeRegistrar:optPostalLineType"
|
||||
minOccurs="0" maxOccurs="3" />
|
||||
<element name="city"
|
||||
type="rdeRegistrar:postalLineType" />
|
||||
<element name="sp"
|
||||
type="rdeRegistrar:optPostalLineType"
|
||||
minOccurs="0" />
|
||||
<element name="pc"
|
||||
type="rdeRegistrar:pcType" minOccurs="0" />
|
||||
<element name="cc"
|
||||
type="rdeRegistrar:ccType" />
|
||||
</sequence>
|
||||
</complexType>
|
||||
|
||||
<simpleType name="postalLineType">
|
||||
<restriction base="normalizedString">
|
||||
<minLength value="1" />
|
||||
<maxLength value="255" />
|
||||
</restriction>
|
||||
</simpleType>
|
||||
|
||||
<simpleType name="optPostalLineType">
|
||||
<restriction base="normalizedString">
|
||||
<maxLength value="255" />
|
||||
</restriction>
|
||||
</simpleType>
|
||||
|
||||
<simpleType name="pcType">
|
||||
<restriction base="token">
|
||||
<maxLength value="16" />
|
||||
</restriction>
|
||||
</simpleType>
|
||||
|
||||
<simpleType name="ccType">
|
||||
<restriction base="token">
|
||||
<length value="2" />
|
||||
</restriction>
|
||||
</simpleType>
|
||||
|
||||
<complexType name="whoisInfoType">
|
||||
<sequence>
|
||||
<element name="name"
|
||||
type="eppcom:labelType" minOccurs="0"/>
|
||||
<element name="url"
|
||||
type="anyURI" minOccurs="0"/>
|
||||
</sequence>
|
||||
</complexType>
|
||||
|
||||
<!-- Delete Type -->
|
||||
<complexType name="deleteType">
|
||||
<complexContent>
|
||||
<extension base="rde:deleteType">
|
||||
<sequence>
|
||||
<element name="id"
|
||||
type="eppcom:clIDType" minOccurs="0"
|
||||
maxOccurs="unbounded"/>
|
||||
</sequence>
|
||||
</extension>
|
||||
</complexContent>
|
||||
</complexType>
|
||||
</schema>
|
37
java/google/registry/xml/xsd/rde-report.xsd
Normal file
37
java/google/registry/xml/xsd/rde-report.xsd
Normal file
|
@ -0,0 +1,37 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<schema targetNamespace="urn:ietf:params:xml:ns:rdeReport-1.0"
|
||||
xmlns:rdeReport="urn:ietf:params:xml:ns:rdeReport-1.0"
|
||||
xmlns:rdeHeader="urn:ietf:params:xml:ns:rdeHeader-1.0"
|
||||
xmlns:rde="urn:ietf:params:xml:ns:rde-1.0"
|
||||
xmlns="http://www.w3.org/2001/XMLSchema"
|
||||
elementFormDefault="qualified">
|
||||
|
||||
<import namespace="urn:ietf:params:xml:ns:rde-1.0"
|
||||
schemaLocation="rde.xsd"/>
|
||||
<import namespace="urn:ietf:params:xml:ns:rdeHeader-1.0"
|
||||
schemaLocation="rde-header.xsd" />
|
||||
|
||||
<annotation>
|
||||
<documentation>
|
||||
Registry Data Escrow Report schema
|
||||
</documentation>
|
||||
</annotation>
|
||||
|
||||
<!-- Root Element -->
|
||||
<element name="report" type="rdeReport:reportType"/>
|
||||
|
||||
<!-- Report Type -->
|
||||
<complexType name="reportType">
|
||||
<sequence>
|
||||
<element name="id" type="rde:depositIdType"/>
|
||||
<element name="version" type="unsignedShort"/>
|
||||
<element name="rydeSpecEscrow" type="token"/>
|
||||
<element name="rydeSpecMapping" type="token"/>
|
||||
<element name="resend" type="unsignedShort"/>
|
||||
<element name="crDate" type="dateTime"/>
|
||||
<element name="kind" type="rde:depositTypeType"/>
|
||||
<element name="watermark" type="dateTime"/>
|
||||
<element ref="rdeHeader:header"/>
|
||||
</sequence>
|
||||
</complexType>
|
||||
</schema>
|
100
java/google/registry/xml/xsd/rde.xsd
Normal file
100
java/google/registry/xml/xsd/rde.xsd
Normal file
|
@ -0,0 +1,100 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<schema targetNamespace="urn:ietf:params:xml:ns:rde-1.0"
|
||||
xmlns:rde="urn:ietf:params:xml:ns:rde-1.0"
|
||||
xmlns:eppcom="urn:ietf:params:xml:ns:eppcom-1.0"
|
||||
xmlns="http://www.w3.org/2001/XMLSchema"
|
||||
elementFormDefault="qualified">
|
||||
|
||||
<annotation>
|
||||
<documentation>
|
||||
Registry Data Escrow schema
|
||||
</documentation>
|
||||
</annotation>
|
||||
|
||||
<import namespace="urn:ietf:params:xml:ns:eppcom-1.0" schemaLocation="eppcom.xsd"/>
|
||||
|
||||
<!-- Root element -->
|
||||
<element name="deposit" type="rde:escrowDepositType"/>
|
||||
|
||||
<!-- RDE types -->
|
||||
<complexType name="escrowDepositType">
|
||||
<sequence>
|
||||
<element name="watermark" type="dateTime"/>
|
||||
<element name="rdeMenu" type="rde:rdeMenuType"/>
|
||||
<element name="deletes" type="rde:deletesType" minOccurs="0"/>
|
||||
<element name="contents" type="rde:contentsType"/>
|
||||
</sequence>
|
||||
<attribute name="type" type="rde:depositTypeType" use="required"/>
|
||||
<attribute name="id" type="rde:depositIdType" use="required"/>
|
||||
<attribute name="prevId" type="rde:depositIdType"/>
|
||||
<attribute name="resend" type="unsignedShort" default="0"/>
|
||||
</complexType>
|
||||
|
||||
<!-- Menu type -->
|
||||
<complexType name="rdeMenuType">
|
||||
<sequence>
|
||||
<element name="version" type="rde:versionType"/>
|
||||
<element name="objURI" type="anyURI" maxOccurs="unbounded"/>
|
||||
</sequence>
|
||||
</complexType>
|
||||
|
||||
<!-- Deletes Type -->
|
||||
<complexType name="deletesType">
|
||||
<sequence minOccurs="0" maxOccurs="unbounded">
|
||||
<element ref="rde:delete"/>
|
||||
</sequence>
|
||||
</complexType>
|
||||
|
||||
<element name="delete" type="rde:deleteType" abstract="true"/>
|
||||
<complexType name="deleteType">
|
||||
<complexContent>
|
||||
<restriction base="anyType"/>
|
||||
</complexContent>
|
||||
</complexType>
|
||||
|
||||
<!-- Contents Type -->
|
||||
<complexType name="contentsType">
|
||||
<sequence maxOccurs="unbounded">
|
||||
<element ref="rde:content"/>
|
||||
</sequence>
|
||||
</complexType>
|
||||
|
||||
<element name="content" type="rde:contentType" abstract="true"/>
|
||||
<complexType name="contentType">
|
||||
<complexContent>
|
||||
<restriction base="anyType"/>
|
||||
</complexContent>
|
||||
</complexType>
|
||||
|
||||
<!-- Type of deposit -->
|
||||
<simpleType name="depositTypeType">
|
||||
<restriction base="token">
|
||||
<enumeration value="FULL"/>
|
||||
<enumeration value="INCR"/>
|
||||
<enumeration value="DIFF"/>
|
||||
</restriction>
|
||||
</simpleType>
|
||||
|
||||
<!-- Deposit identifier type -->
|
||||
<simpleType name="depositIdType">
|
||||
<restriction base="token">
|
||||
<pattern value="\w{1,13}"/>
|
||||
</restriction>
|
||||
</simpleType>
|
||||
|
||||
<!-- A RDE version number is a dotted pair of decimal numbers -->
|
||||
<simpleType name="versionType">
|
||||
<restriction base="token">
|
||||
<pattern value="[1-9]+\.[0-9]+"/>
|
||||
<enumeration value="1.0"/>
|
||||
</restriction>
|
||||
</simpleType>
|
||||
|
||||
<complexType name="rrType">
|
||||
<simpleContent>
|
||||
<extension base="eppcom:clIDType">
|
||||
<attribute name="client" type="eppcom:clIDType"/>
|
||||
</extension>
|
||||
</simpleContent>
|
||||
</complexType>
|
||||
</schema>
|
133
java/google/registry/xml/xsd/rgp.xsd
Normal file
133
java/google/registry/xml/xsd/rgp.xsd
Normal file
|
@ -0,0 +1,133 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
|
||||
<schema targetNamespace="urn:ietf:params:xml:ns:rgp-1.0"
|
||||
xmlns:rgp="urn:ietf:params:xml:ns:rgp-1.0"
|
||||
xmlns="http://www.w3.org/2001/XMLSchema"
|
||||
elementFormDefault="qualified">
|
||||
|
||||
<annotation>
|
||||
<documentation>
|
||||
Extensible Provisioning Protocol v1.0
|
||||
domain name extension schema for registry grace period
|
||||
processing.
|
||||
</documentation>
|
||||
</annotation>
|
||||
|
||||
<!--
|
||||
Child elements found in EPP commands.
|
||||
-->
|
||||
<element name="update" type="rgp:updateType"/>
|
||||
|
||||
<!--
|
||||
Child elements of the <update> command for the
|
||||
redemption grace period.
|
||||
-->
|
||||
<complexType name="updateType">
|
||||
<sequence>
|
||||
<element name="restore" type="rgp:restoreType"/>
|
||||
</sequence>
|
||||
</complexType>
|
||||
|
||||
<complexType name="restoreType">
|
||||
<sequence>
|
||||
<element name="report" type="rgp:reportType"
|
||||
minOccurs="0"/>
|
||||
</sequence>
|
||||
<attribute name="op" type="rgp:rgpOpType" use="required"/>
|
||||
</complexType>
|
||||
|
||||
<!--
|
||||
New redemption grace period operations can be defined
|
||||
by adding to this enumeration.
|
||||
-->
|
||||
<simpleType name="rgpOpType">
|
||||
<restriction base="token">
|
||||
<enumeration value="request"/>
|
||||
<enumeration value="report"/>
|
||||
</restriction>
|
||||
</simpleType>
|
||||
|
||||
<complexType name="reportType">
|
||||
<sequence>
|
||||
<element name="preData" type="rgp:mixedType"/>
|
||||
<element name="postData" type="rgp:mixedType"/>
|
||||
<element name="delTime" type="dateTime"/>
|
||||
<element name="resTime" type="dateTime"/>
|
||||
<element name="resReason" type="rgp:reportTextType"/>
|
||||
<element name="statement" type="rgp:reportTextType"
|
||||
maxOccurs="2"/>
|
||||
<element name="other" type="rgp:mixedType"
|
||||
minOccurs="0"/>
|
||||
</sequence>
|
||||
</complexType>
|
||||
|
||||
<complexType name="mixedType">
|
||||
<complexContent mixed="true">
|
||||
<restriction base="anyType">
|
||||
<sequence>
|
||||
<any processContents="lax"
|
||||
minOccurs="0" maxOccurs="unbounded"/>
|
||||
</sequence>
|
||||
</restriction>
|
||||
</complexContent>
|
||||
</complexType>
|
||||
|
||||
<complexType name="reportTextType">
|
||||
<complexContent mixed="true">
|
||||
<restriction base="anyType">
|
||||
<sequence>
|
||||
<any processContents="lax"
|
||||
minOccurs="0" maxOccurs="unbounded"/>
|
||||
</sequence>
|
||||
<attribute name="lang" type="language" default="en"/>
|
||||
</restriction>
|
||||
</complexContent>
|
||||
</complexType>
|
||||
|
||||
<!--
|
||||
Child response elements.
|
||||
-->
|
||||
<element name="infData" type="rgp:respDataType"/>
|
||||
<element name="upData" type="rgp:respDataType"/>
|
||||
|
||||
<!--
|
||||
Response elements.
|
||||
-->
|
||||
<complexType name="respDataType">
|
||||
<sequence>
|
||||
<element name="rgpStatus" type="rgp:statusType"
|
||||
maxOccurs="unbounded"/>
|
||||
</sequence>
|
||||
</complexType>
|
||||
|
||||
<!--
|
||||
Status is a combination of attributes and an optional
|
||||
human-readable message that may be expressed in languages
|
||||
other than English.
|
||||
-->
|
||||
<complexType name="statusType">
|
||||
<simpleContent>
|
||||
<extension base="normalizedString">
|
||||
<attribute name="s" type="rgp:statusValueType"
|
||||
use="required"/>
|
||||
<attribute name="lang" type="language" default="en"/>
|
||||
</extension>
|
||||
</simpleContent>
|
||||
</complexType>
|
||||
|
||||
<simpleType name="statusValueType">
|
||||
<restriction base="token">
|
||||
<enumeration value="addPeriod"/>
|
||||
<enumeration value="autoRenewPeriod"/>
|
||||
<enumeration value="renewPeriod"/>
|
||||
<enumeration value="transferPeriod"/>
|
||||
<enumeration value="pendingDelete"/>
|
||||
<enumeration value="pendingRestore"/>
|
||||
<enumeration value="redemptionPeriod"/>
|
||||
</restriction>
|
||||
</simpleType>
|
||||
|
||||
<!--
|
||||
End of schema.
|
||||
-->
|
||||
</schema>
|
95
java/google/registry/xml/xsd/secdns.xsd
Normal file
95
java/google/registry/xml/xsd/secdns.xsd
Normal file
|
@ -0,0 +1,95 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<schema targetNamespace="urn:ietf:params:xml:ns:secDNS-1.1"
|
||||
xmlns:secDNS="urn:ietf:params:xml:ns:secDNS-1.1"
|
||||
xmlns="http://www.w3.org/2001/XMLSchema"
|
||||
elementFormDefault="qualified">
|
||||
|
||||
<annotation>
|
||||
<documentation>
|
||||
Extensible Provisioning Protocol v1.0
|
||||
domain name extension schema for provisioning
|
||||
DNS security (DNSSEC) extensions.
|
||||
</documentation>
|
||||
</annotation>
|
||||
|
||||
<!-- Child elements found in EPP commands. -->
|
||||
<element name="create" type="secDNS:dsOrKeyType"/>
|
||||
<element name="update" type="secDNS:updateType"/>
|
||||
|
||||
<!-- Child elements supporting either the dsData or the keyData interface. -->
|
||||
<complexType name="dsOrKeyType">
|
||||
<sequence>
|
||||
<element name="maxSigLife" type="secDNS:maxSigLifeType" minOccurs="0"/>
|
||||
<choice>
|
||||
<element name="dsData" type="secDNS:dsDataType" maxOccurs="unbounded"/>
|
||||
<element name="keyData" type="secDNS:keyDataType" maxOccurs="unbounded"/>
|
||||
</choice>
|
||||
</sequence>
|
||||
</complexType>
|
||||
|
||||
<!-- Definition for the maximum signature life (maxSigLife) -->
|
||||
<simpleType name="maxSigLifeType">
|
||||
<restriction base="int">
|
||||
<minInclusive value="1"/>
|
||||
</restriction>
|
||||
</simpleType>
|
||||
|
||||
<!-- Child elements of dsData used for dsData interface -->
|
||||
<complexType name="dsDataType">
|
||||
<sequence>
|
||||
<element name="keyTag" type="unsignedShort"/>
|
||||
<element name="alg" type="unsignedByte"/>
|
||||
<element name="digestType" type="unsignedByte"/>
|
||||
<element name="digest" type="hexBinary"/>
|
||||
<element name="keyData" type="secDNS:keyDataType" minOccurs="0"/>
|
||||
</sequence>
|
||||
</complexType>
|
||||
|
||||
<!-- Child elements of keyData used for keyData interface and optionally with dsData
|
||||
interface -->
|
||||
<complexType name="keyDataType">
|
||||
<sequence>
|
||||
<element name="flags" type="unsignedShort"/>
|
||||
<element name="protocol" type="unsignedByte"/>
|
||||
<element name="alg" type="unsignedByte"/>
|
||||
<element name="pubKey" type="secDNS:keyType"/>
|
||||
</sequence>
|
||||
</complexType>
|
||||
|
||||
<!-- Definition for the public key -->
|
||||
<simpleType name="keyType">
|
||||
<restriction base="base64Binary">
|
||||
<minLength value="1"/>
|
||||
</restriction>
|
||||
</simpleType>
|
||||
|
||||
<!-- Child elements of the <update> element. -->
|
||||
<complexType name="updateType">
|
||||
<sequence>
|
||||
<element name="rem" type="secDNS:remType" minOccurs="0"/>
|
||||
<element name="add" type="secDNS:dsOrKeyType" minOccurs="0"/>
|
||||
<element name="chg" type="secDNS:chgType" minOccurs="0"/>
|
||||
</sequence>
|
||||
<attribute name="urgent" type="boolean" default="false"/>
|
||||
</complexType>
|
||||
|
||||
|
||||
<!-- Child elements of the <rem> command. -->
|
||||
<complexType name="remType">
|
||||
<choice>
|
||||
<element name="all" type="boolean"/>
|
||||
<element name="dsData" type="secDNS:dsDataType" maxOccurs="unbounded"/>
|
||||
<element name="keyData" type="secDNS:keyDataType" maxOccurs="unbounded"/>
|
||||
</choice>
|
||||
</complexType>
|
||||
|
||||
<!-- Child elements supporting the <chg> element. -->
|
||||
<complexType name="chgType">
|
||||
<sequence>
|
||||
<element name="maxSigLife" type="secDNS:maxSigLifeType" minOccurs="0"/>
|
||||
</sequence>
|
||||
</complexType>
|
||||
|
||||
<!-- Child response elements. -->
|
||||
<element name="infData" type="secDNS:dsOrKeyType"/>
|
||||
</schema>
|
71
java/google/registry/xml/xsd/smd.xsd
Normal file
71
java/google/registry/xml/xsd/smd.xsd
Normal file
|
@ -0,0 +1,71 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!-- Schema extracted from http://tools.ietf.org/html/draft-lozano-tmch-smd -->
|
||||
<schema
|
||||
targetNamespace="urn:ietf:params:xml:ns:signedMark-1.0"
|
||||
xmlns:smd="urn:ietf:params:xml:ns:signedMark-1.0"
|
||||
xmlns:mark="urn:ietf:params:xml:ns:mark-1.0"
|
||||
xmlns:dsig="http://www.w3.org/2000/09/xmldsig#"
|
||||
xmlns="http://www.w3.org/2001/XMLSchema"
|
||||
elementFormDefault="qualified">
|
||||
|
||||
<annotation>
|
||||
<documentation>
|
||||
Schema for representing a Signed Trademark.
|
||||
</documentation>
|
||||
</annotation>
|
||||
|
||||
<import namespace="urn:ietf:params:xml:ns:mark-1.0"
|
||||
schemaLocation="mark.xsd" />
|
||||
<import namespace="http://www.w3.org/2000/09/xmldsig#"
|
||||
schemaLocation="dsig.xsd"/>
|
||||
|
||||
<!--
|
||||
Abstract signed mark for replacement via substitution.
|
||||
-->
|
||||
<element name="abstractSignedMark" type="smd:abstractSignedMarkType"
|
||||
abstract="true"/>
|
||||
|
||||
<!--
|
||||
Empty type for use in extending for a signed mark
|
||||
-->
|
||||
<complexType name="abstractSignedMarkType"/>
|
||||
|
||||
<element name="signedMark" type="smd:signedMarkType"
|
||||
substitutionGroup="smd:abstractSignedMark"/>
|
||||
|
||||
<element name="encodedSignedMark" type="smd:encodedSignedMarkType"/>
|
||||
|
||||
<complexType name="signedMarkType">
|
||||
<complexContent>
|
||||
<extension base="smd:abstractSignedMarkType">
|
||||
<sequence>
|
||||
<element name="id" type="mark:idType"/>
|
||||
<element name="issuerInfo" type="smd:issuerInfoType"/>
|
||||
<element name="notBefore" type="dateTime"/>
|
||||
<element name="notAfter" type="dateTime"/>
|
||||
<element ref="mark:abstractMark"/>
|
||||
<element ref="dsig:Signature"/>
|
||||
</sequence>
|
||||
<attribute name="id" type="ID" use="required"/>
|
||||
</extension>
|
||||
</complexContent>
|
||||
</complexType>
|
||||
|
||||
<complexType name="issuerInfoType">
|
||||
<sequence>
|
||||
<element name="org" type="token"/>
|
||||
<element name="email" type="mark:minTokenType"/>
|
||||
<element name="url" type="token" minOccurs="0"/>
|
||||
<element name="voice" type="mark:e164Type" minOccurs="0"/>
|
||||
</sequence>
|
||||
<attribute name="issuerID" type="token" use="required"/>
|
||||
</complexType>
|
||||
|
||||
<complexType name="encodedSignedMarkType">
|
||||
<simpleContent>
|
||||
<extension base="token">
|
||||
<attribute name="encoding" default="base64"/>
|
||||
</extension>
|
||||
</simpleContent>
|
||||
</complexType>
|
||||
</schema>
|
Loading…
Add table
Add a link
Reference in a new issue