I am building an API that returns XML response. I have created DTD for the response and it is available on a public URL. The DTD has been shared to intended users in the API documentation that I have created. Is it mandatory to include the DTD reference in the response XML too ? Will XML parsers who are working with the XML response automatically try to validate the response with the DTD ? If specifying the DTD is optional, what are the pros and cons of specifying and skipping it ?
Is it mandatory to specify DTD in XML?
1.6k Views Asked by Jayakrishnan GK At
2
There are 2 best solutions below
0
Quentin
On
The DTD is only required if you use named entities outside the 5 that are built into XML (& et al).
Some XML parsers will ignore it completely. Some will download it and use it.
Pros:
- The XML can be validated
- The you can use custom named entities in parsers that support it
Cons:
- Additional HTTP requests in parsers that support it
- Custom named entities will break the document in parsers that don't support it
Related Questions in XML
- Impose component restriction to a series of parsys-CQ
- Wrong xml being inflated android
- Shorten the XSD
- Writing/Overwriting to specific XML file from ASP.NET code behind
- Magento custom block. Can't get block's file
- Layout not shifting up when keyboard is open
- CSV to XML XSLT: How to quote excape
- Getting deeply embedded XML element values
- Saving FileSystemInfo Array to File
- how to apply templates within xsl:for-each
- Spring - configure Jboss Intros for xml with java config?
- Problems with implementing custom actionbar android
- Can Apache Ant be told to cache its XML files?
- Is Log4j2 xml configuration case sensitive?
- How to get a specific node value in XML Pull Parser
Related Questions in REST
- Spring RestTemplate passing the type of the response
- .net rest service with JSON string and consumed with java client
- SuiteCRM how to retrieve all account related contacts
- http status code for failed email send
- cloud foundry - 413 Request Entity Too Large
- Why does PHP add "\r\n" to an empty string?
- WCF Service not accepting multiple body parameters
- How to send Rest GET request that contains "#" value in url parameters?
- Phalcon PHP - RESTful API
- Object of class CS_REST_Wrapper_Result could not be converted to string in CAMPAIGN MONITOR
- purchase individual items and subscriptions in the same PayPal REST API transaction
- Empty Response Received on Android POST Request
- angular load more tweets onclick
- Async vs Horizontal scaling
- Responding to an Office 365 event invite via REST
Related Questions in SOAP
- Java - How to send byte array on Soap Request?
- SoapClient in PHP 5.6 when using HTTPS emits warning with "key values mismatch"
- zend soap server reading xml attributes
- Multiple HTTP post requests to a web service from XML files
- Header in SOAPclient PHP
- Namespace for array field in node-soap client (Node.js)
- Generate clients for multiple WSDL files and place it in different package through Spring Gradle
- How pass XML from PHP to the Soap WCF service?
- Jira Soap Api Add Watchers
- java.lang.LinkageError: loader constraint violation when developing a SOAP plugin in JIRA
- Parsing XML with same parent and child node name
- WCF part of soap response body is signed instead of entire body
- Create signature with bouncycastle api. Key always null
- How to convert SOAP-based WCF service to RESTfull API
- Calling method from SOAP returns null
Related Questions in DTD
- Which XML DTD is Valid
- Hibernate Tools - Not able to add configuration - dom4j connection Timedout -
- How to define dtd element with XOR
- DTD, #REQUIRED, #IMPLIED, Example
- Valid /Validated-Difference (XML,DTD)
- How to set system and public ID without validating or checking DTD?
- '&' inside element not validated by DTD how can i add in DTD to validate
- Why is it very important to specify DTD constraints for an XML document if the latter is treated by a JavaScript file?
- How to make two attributes in XML to be unique (DTD)
- SpringIntegration - disable DTD validation
- XML DTD Validate. Difference in Eclipse and other editors
- When generating beans from dtd with xjc default values are in getter methods
- Howto properly make dbunit reference a dtd file in the xml dataset?
- jaxb, how to get rid of unnecessary wrapping classes
- <!{CDATA[]]> and <ELEMENT> in a xml element
Trending Questions
- UIImageView Frame Doesn't Reflect Constraints
- Is it possible to use adb commands to click on a view by finding its ID?
- How to create a new web character symbol recognizable by html/javascript?
- Why isn't my CSS3 animation smooth in Google Chrome (but very smooth on other browsers)?
- Heap Gives Page Fault
- Connect ffmpeg to Visual Studio 2008
- Both Object- and ValueAnimator jumps when Duration is set above API LvL 24
- How to avoid default initialization of objects in std::vector?
- second argument of the command line arguments in a format other than char** argv or char* argv[]
- How to improve efficiency of algorithm which generates next lexicographic permutation?
- Navigating to the another actvity app getting crash in android
- How to read the particular message format in android and store in sqlite database?
- Resetting inventory status after order is cancelled
- Efficiently compute powers of X in SSE/AVX
- Insert into an external database using ajax and php : POST 500 (Internal Server Error)
Popular Questions
- How do I undo the most recent local commits in Git?
- How can I remove a specific item from an array in JavaScript?
- How do I delete a Git branch locally and remotely?
- Find all files containing a specific text (string) on Linux?
- How do I revert a Git repository to a previous commit?
- How do I create an HTML button that acts like a link?
- How do I check out a remote Git branch?
- How do I force "git pull" to overwrite local files?
- How do I list all files of a directory?
- How to check whether a string contains a substring in JavaScript?
- How do I redirect to another webpage?
- How can I iterate over rows in a Pandas DataFrame?
- How do I convert a String to an int in Java?
- Does Python have a string 'contains' substring method?
- How do I check if a string contains a specific word?
It's not mandated by the XML spec. Whether it's mandated by other specs or rules you wish to (or are obligated to) conform to, only you could say.
If you specify it, some will, because they mistakenly confuse the declarative meaning of the document type declaration (this document is [intended to be] valid against this DTD) with the imperative meaning 'please check this document for validity against this DTD'.
If you don't specify it, it's unlikely that an XML parser will attempt to validate the instance against any DTD, let alone the one you have in mind.
In favor of specifying it: it's helpful information for someone trying to solve a problem involving the XML document(s) in question. It makes it more likely that errors in XML data streams will be caught early.
In favor of omitting it: some brain-dead systems regard validation against DTDs as entailing security risks, and cannot think of any better way to defend against a billion-laughs attack. If those brain-dead systems also cannot distinguish the declarative and the imperative meanings of the document type declaration, they may refuse to process the document. (Of course, since your life will probably be happier if you are able to steer clear of such systems, this argument may be taken in the opposite way: if you specify the DTD, you are less likely to get yourself entangled unawares with such brain-dead systems. Their complaints about the DTD serve as an early warning system, giving you time to run the other way. If you omit the DTD, you may find yourself using systems whose shortcomings will eventually become visible in other ways.)