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
- Postgres && statement Error in Mybatis Mapper?
- Sorting items after building an XML feed?
- C# XML ModelBinding - ASP.NET Core 8 Web API - required field not found
- How can I create an automatic table of contents in docx without the text being bold?
- Odoo 16 Make Fields Readonly Using XPath
- Using similar tags for different objects in XML
- Android Studio problem like gradle sync project failed and plugin error, version 2023.2.1 Iguana
- error: cannot find symbol View root = inflater.inflate(R.layout.toolbar, parent, false);
- Android camera application restriction to 12 mp
- Azure Data Factory Copy Activity Only Importing First Row of XML file
- I am not able to remove space below the navigation view icon in android studio. What;s wrong with code?
- Field can be converted to a local variable ,convert field to local variable in onCreate method
- Deserialize XML with optional different name
- Retrieve tags from xml using python
- Getting attribute from xml and printing it error
Related Questions in REST
- Query parameter works fine with fastapi application when tested locally but not working when the FastAPI application is deployed on AWS lambda
- Add an http GET/POST entry point to a Django with channels websocket
- Difficulty creating a data pipeline with Fabric Datafactory using REST
- Flutter connection to a local api
- Accessing REST API Status Codes using Azure Data Factory Copy Activity (or similar)?
- Mass Resource deletion in REST
- why when I check endpoint /tasks, an error always appears "error : invalid token" even though I have entered the appropriate token that I got
- How to prevent users from creating custom client apps?
- How to create a REST API with .NET Framework?
- Efficiently Handling Large Number of API Calls with Delphi 10.4 and OmniThreadLibrary
- Put Request throwing 401 [no body] Unauthorized
- Converting img src data to octet-stream
- Implementing Email Verification and Notification System in a Full-Stack Application with React Frontend and Node Backend
- Micronaut - Add Controller from external library
- Moving Template or OVA to Datastore using vCenter API
Related Questions in SOAP
- How can I read the header of request to webserver
- Apache CXF is unable to handle duplicate localnames
- Using SOAP with WSDL in python with the suds-py3 library: Why doesn't it show me anything when I use the following code?
- How can I call a SOAP webserver method in Vue.js?
- Avoid soap fault response (org.apache.cxf)
- Python Zeep XML - 0 float value changes type shape
- Migrate ASMX web method to WCF which accepts string array
- In XSD do you have to import the standard schema in order to use it?
- Problem: Authentication. Project: C++ Onvif manager Deltaco camera
- java.net.ConnectException: Connection timed out: no further information Java to SOAP
- Looking for an API or approach for range based parameter flight pricing using SabreCommandLLSRS
- After upgrading to JDK 11 my SOAP response is different
- Correct way to make a non-blocking delay in Spring WS (SOAP)
- android.os.NetworkOnMainThreadException even using an Aysnc task
- How to send multipart/mime SOAP request
Related Questions in DTD
- Adding a horizontal line in CSS stylesheet (for XML file)
- IIS url rewrite need help in outbound for dtd
- How to autocreate a valid xml structure giving only a dtd DOCTYPE VSCODE
- Is there a way to disregard a referenced dtd when running an xslt?
- How to get internal subset using SAX parser in XercesC?
- Is there a DTD for the DTD?
- The entity &bar; is not defined
- jQuery is not compatible with Quirks Mode - for DTD html 4.0 transitional <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
- Why I can't enable DTDs support in T-SQL?
- Create logic within DTD/XML
- mapping relational database schema to document type definition (DTD)
- How to add a Service Reference from wsdl with DTD
- xml schema, multiple elements with same name but with different types error
- How to read doctype declaration of an xml using xslt?
- Is it possible to re-use `("0" | "1")` via a parameter entity in DTD?
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 # Hahtags
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.)