Difference in XML when using [] at end of !DOCTYPE?
As you can see in the linked question, when using XDocument
in C#, an empty internal subset will be added in the DTD-Header, if non had existed before. The question and answer deal with how to remove this, however, while the answerer points out that that this is well-formatted XML, I ask:
1) Under which circumstances will this cause problems? Which standard changed so that a legacy application might be incompatible with an empty internal subset?
2) Is it preferable to use empty internal subsets going forward with new applications?
c# xml linq-to-xml dtd doctype
add a comment |
As you can see in the linked question, when using XDocument
in C#, an empty internal subset will be added in the DTD-Header, if non had existed before. The question and answer deal with how to remove this, however, while the answerer points out that that this is well-formatted XML, I ask:
1) Under which circumstances will this cause problems? Which standard changed so that a legacy application might be incompatible with an empty internal subset?
2) Is it preferable to use empty internal subsets going forward with new applications?
c# xml linq-to-xml dtd doctype
add a comment |
As you can see in the linked question, when using XDocument
in C#, an empty internal subset will be added in the DTD-Header, if non had existed before. The question and answer deal with how to remove this, however, while the answerer points out that that this is well-formatted XML, I ask:
1) Under which circumstances will this cause problems? Which standard changed so that a legacy application might be incompatible with an empty internal subset?
2) Is it preferable to use empty internal subsets going forward with new applications?
c# xml linq-to-xml dtd doctype
As you can see in the linked question, when using XDocument
in C#, an empty internal subset will be added in the DTD-Header, if non had existed before. The question and answer deal with how to remove this, however, while the answerer points out that that this is well-formatted XML, I ask:
1) Under which circumstances will this cause problems? Which standard changed so that a legacy application might be incompatible with an empty internal subset?
2) Is it preferable to use empty internal subsets going forward with new applications?
c# xml linq-to-xml dtd doctype
c# xml linq-to-xml dtd doctype
edited Nov 13 '18 at 15:25
Robert Tausig
asked Nov 13 '18 at 12:08
Robert TausigRobert Tausig
1116
1116
add a comment |
add a comment |
2 Answers
2
active
oldest
votes
When you parse Xml Document by using XDocument
with DTD then empty Internal Subset
means Square Brackets is automatically inserted.
If you want to remove this Internal Subset
then you can set XDocumentType.InternalSubset = null
like
XDocument doc = XDocument.Load(@"Path to xml file");
if (doc.DocumentType != null)
doc.DocumentType.InternalSubset = null;
//Do code with XDocument
Example:
<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE book [ <!ENTITY h "hardcover"> ]>
<book genre="novel" ISBN="1-861001-57-5">
<title>Pride And Prejudice</title>
<author>Mark Henry</author>
</book>
In above example kindly noticed this part [ <!ENTITY h "hardcover"> ]
. This is called as Internal Subset.
Does it matter?
No this does not matter. but its a well formed XML if your XML doesn't contain any internal subset then it represent as blank square brackets . it means that your xml doesn't contain any internal subset.
While parsing xml with XDocument with no internal subset then XDocument append blank square brackets instead of display nothing in DOCTYPE.
What does an empty internal subset do?
The basic purpose of an internal entity is to get rid of typing same content (like the name of the organization) again and again. And instead, we can define an internal entity to contain the text and then only you need to use the entity where you want to insert the text. Because the entity is expanded by the parser, you can be assured that you'll get the same text in every location. The parser will also catch if you misspell an entity name.
You can read more about Internal Subset here
But does it matter? What does an empty internal subset do?
– Robert Tausig
Nov 13 '18 at 14:43
Currently m not in office, I'll try to give u update tomorrow. Stay in touch :)
– er-mfahhgk
Nov 13 '18 at 14:53
@RobertTausig, answer update kindly noticed and read from Example section :)
– er-mfahhgk
Nov 14 '18 at 6:05
@RobertTausig, if my answer was helpful to you then plz mark the tick on left side of answer to make it green :)
– er-mfahhgk
Nov 15 '18 at 10:42
add a comment |
It's a little bit strange, but not wrong.
The grammar for DOCTYPE is
doctypedecl ::= '<!DOCTYPE' S Name (S ExternalID)? S? ('[' intSubset ']' S?)? '>'
intSubset ::= (markupdecl | DeclSep)*
So you're allowed a sequence of zero-or-more markup declarations between square brackets, and if there aren't any markup declarations then you can omit the square brackets (but you aren't required to).
add a comment |
Your Answer
StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "1"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53280729%2fdifference-in-xml-when-using-at-end-of-doctype%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
2 Answers
2
active
oldest
votes
2 Answers
2
active
oldest
votes
active
oldest
votes
active
oldest
votes
When you parse Xml Document by using XDocument
with DTD then empty Internal Subset
means Square Brackets is automatically inserted.
If you want to remove this Internal Subset
then you can set XDocumentType.InternalSubset = null
like
XDocument doc = XDocument.Load(@"Path to xml file");
if (doc.DocumentType != null)
doc.DocumentType.InternalSubset = null;
//Do code with XDocument
Example:
<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE book [ <!ENTITY h "hardcover"> ]>
<book genre="novel" ISBN="1-861001-57-5">
<title>Pride And Prejudice</title>
<author>Mark Henry</author>
</book>
In above example kindly noticed this part [ <!ENTITY h "hardcover"> ]
. This is called as Internal Subset.
Does it matter?
No this does not matter. but its a well formed XML if your XML doesn't contain any internal subset then it represent as blank square brackets . it means that your xml doesn't contain any internal subset.
While parsing xml with XDocument with no internal subset then XDocument append blank square brackets instead of display nothing in DOCTYPE.
What does an empty internal subset do?
The basic purpose of an internal entity is to get rid of typing same content (like the name of the organization) again and again. And instead, we can define an internal entity to contain the text and then only you need to use the entity where you want to insert the text. Because the entity is expanded by the parser, you can be assured that you'll get the same text in every location. The parser will also catch if you misspell an entity name.
You can read more about Internal Subset here
But does it matter? What does an empty internal subset do?
– Robert Tausig
Nov 13 '18 at 14:43
Currently m not in office, I'll try to give u update tomorrow. Stay in touch :)
– er-mfahhgk
Nov 13 '18 at 14:53
@RobertTausig, answer update kindly noticed and read from Example section :)
– er-mfahhgk
Nov 14 '18 at 6:05
@RobertTausig, if my answer was helpful to you then plz mark the tick on left side of answer to make it green :)
– er-mfahhgk
Nov 15 '18 at 10:42
add a comment |
When you parse Xml Document by using XDocument
with DTD then empty Internal Subset
means Square Brackets is automatically inserted.
If you want to remove this Internal Subset
then you can set XDocumentType.InternalSubset = null
like
XDocument doc = XDocument.Load(@"Path to xml file");
if (doc.DocumentType != null)
doc.DocumentType.InternalSubset = null;
//Do code with XDocument
Example:
<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE book [ <!ENTITY h "hardcover"> ]>
<book genre="novel" ISBN="1-861001-57-5">
<title>Pride And Prejudice</title>
<author>Mark Henry</author>
</book>
In above example kindly noticed this part [ <!ENTITY h "hardcover"> ]
. This is called as Internal Subset.
Does it matter?
No this does not matter. but its a well formed XML if your XML doesn't contain any internal subset then it represent as blank square brackets . it means that your xml doesn't contain any internal subset.
While parsing xml with XDocument with no internal subset then XDocument append blank square brackets instead of display nothing in DOCTYPE.
What does an empty internal subset do?
The basic purpose of an internal entity is to get rid of typing same content (like the name of the organization) again and again. And instead, we can define an internal entity to contain the text and then only you need to use the entity where you want to insert the text. Because the entity is expanded by the parser, you can be assured that you'll get the same text in every location. The parser will also catch if you misspell an entity name.
You can read more about Internal Subset here
But does it matter? What does an empty internal subset do?
– Robert Tausig
Nov 13 '18 at 14:43
Currently m not in office, I'll try to give u update tomorrow. Stay in touch :)
– er-mfahhgk
Nov 13 '18 at 14:53
@RobertTausig, answer update kindly noticed and read from Example section :)
– er-mfahhgk
Nov 14 '18 at 6:05
@RobertTausig, if my answer was helpful to you then plz mark the tick on left side of answer to make it green :)
– er-mfahhgk
Nov 15 '18 at 10:42
add a comment |
When you parse Xml Document by using XDocument
with DTD then empty Internal Subset
means Square Brackets is automatically inserted.
If you want to remove this Internal Subset
then you can set XDocumentType.InternalSubset = null
like
XDocument doc = XDocument.Load(@"Path to xml file");
if (doc.DocumentType != null)
doc.DocumentType.InternalSubset = null;
//Do code with XDocument
Example:
<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE book [ <!ENTITY h "hardcover"> ]>
<book genre="novel" ISBN="1-861001-57-5">
<title>Pride And Prejudice</title>
<author>Mark Henry</author>
</book>
In above example kindly noticed this part [ <!ENTITY h "hardcover"> ]
. This is called as Internal Subset.
Does it matter?
No this does not matter. but its a well formed XML if your XML doesn't contain any internal subset then it represent as blank square brackets . it means that your xml doesn't contain any internal subset.
While parsing xml with XDocument with no internal subset then XDocument append blank square brackets instead of display nothing in DOCTYPE.
What does an empty internal subset do?
The basic purpose of an internal entity is to get rid of typing same content (like the name of the organization) again and again. And instead, we can define an internal entity to contain the text and then only you need to use the entity where you want to insert the text. Because the entity is expanded by the parser, you can be assured that you'll get the same text in every location. The parser will also catch if you misspell an entity name.
You can read more about Internal Subset here
When you parse Xml Document by using XDocument
with DTD then empty Internal Subset
means Square Brackets is automatically inserted.
If you want to remove this Internal Subset
then you can set XDocumentType.InternalSubset = null
like
XDocument doc = XDocument.Load(@"Path to xml file");
if (doc.DocumentType != null)
doc.DocumentType.InternalSubset = null;
//Do code with XDocument
Example:
<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE book [ <!ENTITY h "hardcover"> ]>
<book genre="novel" ISBN="1-861001-57-5">
<title>Pride And Prejudice</title>
<author>Mark Henry</author>
</book>
In above example kindly noticed this part [ <!ENTITY h "hardcover"> ]
. This is called as Internal Subset.
Does it matter?
No this does not matter. but its a well formed XML if your XML doesn't contain any internal subset then it represent as blank square brackets . it means that your xml doesn't contain any internal subset.
While parsing xml with XDocument with no internal subset then XDocument append blank square brackets instead of display nothing in DOCTYPE.
What does an empty internal subset do?
The basic purpose of an internal entity is to get rid of typing same content (like the name of the organization) again and again. And instead, we can define an internal entity to contain the text and then only you need to use the entity where you want to insert the text. Because the entity is expanded by the parser, you can be assured that you'll get the same text in every location. The parser will also catch if you misspell an entity name.
You can read more about Internal Subset here
edited Nov 14 '18 at 6:04
answered Nov 13 '18 at 12:19
er-mfahhgker-mfahhgk
5,4572616
5,4572616
But does it matter? What does an empty internal subset do?
– Robert Tausig
Nov 13 '18 at 14:43
Currently m not in office, I'll try to give u update tomorrow. Stay in touch :)
– er-mfahhgk
Nov 13 '18 at 14:53
@RobertTausig, answer update kindly noticed and read from Example section :)
– er-mfahhgk
Nov 14 '18 at 6:05
@RobertTausig, if my answer was helpful to you then plz mark the tick on left side of answer to make it green :)
– er-mfahhgk
Nov 15 '18 at 10:42
add a comment |
But does it matter? What does an empty internal subset do?
– Robert Tausig
Nov 13 '18 at 14:43
Currently m not in office, I'll try to give u update tomorrow. Stay in touch :)
– er-mfahhgk
Nov 13 '18 at 14:53
@RobertTausig, answer update kindly noticed and read from Example section :)
– er-mfahhgk
Nov 14 '18 at 6:05
@RobertTausig, if my answer was helpful to you then plz mark the tick on left side of answer to make it green :)
– er-mfahhgk
Nov 15 '18 at 10:42
But does it matter? What does an empty internal subset do?
– Robert Tausig
Nov 13 '18 at 14:43
But does it matter? What does an empty internal subset do?
– Robert Tausig
Nov 13 '18 at 14:43
Currently m not in office, I'll try to give u update tomorrow. Stay in touch :)
– er-mfahhgk
Nov 13 '18 at 14:53
Currently m not in office, I'll try to give u update tomorrow. Stay in touch :)
– er-mfahhgk
Nov 13 '18 at 14:53
@RobertTausig, answer update kindly noticed and read from Example section :)
– er-mfahhgk
Nov 14 '18 at 6:05
@RobertTausig, answer update kindly noticed and read from Example section :)
– er-mfahhgk
Nov 14 '18 at 6:05
@RobertTausig, if my answer was helpful to you then plz mark the tick on left side of answer to make it green :)
– er-mfahhgk
Nov 15 '18 at 10:42
@RobertTausig, if my answer was helpful to you then plz mark the tick on left side of answer to make it green :)
– er-mfahhgk
Nov 15 '18 at 10:42
add a comment |
It's a little bit strange, but not wrong.
The grammar for DOCTYPE is
doctypedecl ::= '<!DOCTYPE' S Name (S ExternalID)? S? ('[' intSubset ']' S?)? '>'
intSubset ::= (markupdecl | DeclSep)*
So you're allowed a sequence of zero-or-more markup declarations between square brackets, and if there aren't any markup declarations then you can omit the square brackets (but you aren't required to).
add a comment |
It's a little bit strange, but not wrong.
The grammar for DOCTYPE is
doctypedecl ::= '<!DOCTYPE' S Name (S ExternalID)? S? ('[' intSubset ']' S?)? '>'
intSubset ::= (markupdecl | DeclSep)*
So you're allowed a sequence of zero-or-more markup declarations between square brackets, and if there aren't any markup declarations then you can omit the square brackets (but you aren't required to).
add a comment |
It's a little bit strange, but not wrong.
The grammar for DOCTYPE is
doctypedecl ::= '<!DOCTYPE' S Name (S ExternalID)? S? ('[' intSubset ']' S?)? '>'
intSubset ::= (markupdecl | DeclSep)*
So you're allowed a sequence of zero-or-more markup declarations between square brackets, and if there aren't any markup declarations then you can omit the square brackets (but you aren't required to).
It's a little bit strange, but not wrong.
The grammar for DOCTYPE is
doctypedecl ::= '<!DOCTYPE' S Name (S ExternalID)? S? ('[' intSubset ']' S?)? '>'
intSubset ::= (markupdecl | DeclSep)*
So you're allowed a sequence of zero-or-more markup declarations between square brackets, and if there aren't any markup declarations then you can omit the square brackets (but you aren't required to).
answered Nov 13 '18 at 12:29
Michael KayMichael Kay
109k661115
109k661115
add a comment |
add a comment |
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53280729%2fdifference-in-xml-when-using-at-end-of-doctype%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown