XML DTD Validator

In this article

Overview

Use the XML DTD Validator policy to validate a request against an XML Document Type Definition (DTD) schema. You can upload an XML DTD schema file in the Policy dialog as a valid Swagger XML document. If an invalid path or parameter or object is not defined in the DTD schema, the client receives a Schema Validation Failed error.

Alternatively, you can use the specification that you upload to create an API.

Policy Execution Order

This XML DTD Validator policy executes after the request has been authenticated. You can use both the XML DTD and XML XSD policies concurrently as long as the schemas do not conflict.

Settings

Expression Enabled Fields in API Policies

All expression enabled fields take expressions from the SnapLogic Expression Language and the API Policy Manager functions.

Parameter Name

Description

Default Value

Example

Parameter Name

Description

Default Value

Example

Label

Required. The name for the API policy.

XML DTD Validator

DTD Validator

When this policy should be applied

An expression enabled field that determines the condition to be fulfilled for the API policy to execute.

For example, if the value in this field is request.method == "POST", the API policy is executed only if the request method is a POST.

True

request.method == "POST"

Edit DTD

Launches the XML editor which allows you to define XML. The editor loads an existing XML document if defined previously. The editor lets you save XML in SnapLogic's file system or import existing XML documents from it.

Empty XML file

<!ELEMENT bibliography (book+)> <!ELEMENT book (title, author*, publisher?, year?, extraAttribute, content, section*)> <!ATTLIST book ISBN CDATA #REQUIRED> <!ATTLIST book price CDATA #IMPLIED> <!ELEMENT title (#PCDATA)> <!ELEMENT author (#PCDATA)> <!ELEMENT publisher (#PCDATA)> <!ELEMENT year (#PCDATA)> <!ELEMENT extraAttribute (#PCDATA)> <!ELEMENT content (#PCDATA|extraAttribute)*> <!ELEMENT section (title, content?, section*)>

Hide/Render WhiteSpace: Formats XML with watermarked dots or plain white space between the characters.

 

 

Format Code: Formats text in XML

 

 

Status

Indicates whether the API policy is enabled or disabled. 

Enabled

Disabled

Usage Guidelines

Support for inline declared definitions

You can enter a schema by clicking Edit DTD to open the XML editor. If the editor is empty, the policy will evaluate the Document Type Definitions declared inline, as shown in the following example:

<?xml version="1.0"?> <!DOCTYPE books [ <!ELEMENT books (book+)> <!ELEMENT book (author, title, genre, price, pub_date, review+)> <!ATTLIST book id CDATA #REQUIRED> <!ELEMENT author (#PCDATA)> <!ELEMENT title (#PCDATA)> <!ELEMENT genre (#PCDATA)> <!ELEMENT price (#PCDATA)> <!ELEMENT pub_date (#PCDATA)> <!ELEMENT review (#PCDATA)> ]> <books> <book id="bk001"> <author>Famous Author</author> <title>Computer Science</title> <genre>Education</genre> <price>100.00</price> <pub_date>2000-10-01</pub_date> <review>Test Review</review> </book> </books>

 

DTD Guidelines

The following guidelines apply DTD schemas entered into the editor and their HTTP clients making the request:

  • HTTP Clients are expected to provide a <!DOCTYPE> tag to indicate validation against Document Type Definitions. Without the tag, validation fails.

  • The parameter just after !DOCTYPE is expected to be the same as the outermost tag in the XML. If not, validation fails.

  • Externally referenced DTDs are declared with the following system callout: SYSTEM "policy.dtd"

    • <!DOCTYPE outermost_object SYSTEM "external_reference.dtd"> is the standard callout format for specifying DTD validation against external references.

    • For validation against the policy’s Document Type Definitions, HTTP clients are required to specify the SYSTEM declaration.

      • As the API admin, you can instruct clients to use any SYSTEM parameter following the callout. Any value can be specified. See the "policy.dtd" callout.

      • Regardless of the value, the XML DTD Validator uses the definitions specified in the policy to validate external references.

<!DOCTYPE books SYSTEM "policy.dtd"> <books> <book id="bk001"> ... </book> </books>