XML / DTD / XML Schema 질문입니다

sacredone의 이미지

XML 데이터 포멧을 이용하여 데이터를 전송하고자 할때 (수신측이 이를 데이터베이스에 저장하거나 처리함)

DTD, XML Schema 를 이용하여 XML 문서를 작성을 할텐데요

첫번째 질문

작성자 (전송자)가 작성한 XML 이 유효한 XML 파일인지 수신측이 어떻게알죠?

ㅁㅇㄹ ㅁㄴㅇㄹ

이라는 XML 문서를 작성해서 보냈을떄 수신측이
"book 에는 속성이 REQUIRED 일텐데 없네"
"book 자식엘리멘트가 저자, 제목말고 디스크립션도 있는데"
이런식으로 해석 할 수 있는거아닌가요?
그럼 DTD 나 XML schema 가 무조건 필요할텐데
없는 문서도있고 없어도 된다는말이있는데 어떻게 그럴수가 있을까요

두번째 질문

DTD 나 XML schema 가 무조건 있어야한다고 가정하면
전송자는 항상 DTD 나 XML schema 를 XML 문서를 보낼때 같이 보내겠죠
그럴때 수신측은 XML 문서를 디스플레이해주거나 저장을하거나 하여간
실려온 데이터를 어떻게 처리를할텐데
DTD 나 XML schema 문서인 .dtd, .xsd 같은 파일들도
뭔가 처리를해주나요?

두번째 질문을 하는이유는
XML 문서에 포함 될 수 있는 공격을 막고자 일단 파싱을 할려하는데

ㅁㄴㅇㄹ
ㅁㄴㅇㄹ

이런 XML 문서가왔을때 파싱할때
element:book
value:(NULL)

element:title
value:ㅁㄴㅇㄹ

element:author
value:ㅁㄴㅇㄹ

대충 이런식으로 파싱하게될텐데

.dtd, .xsd 파일도 공격에 사용될수 있으면 (수신측이 이를받아 저장하거나 어떤 처리를한다면)
DTD, XML schema 도 파싱을 해야하는지 궁금해서 질문합니다

실제 XML 포멧을 이용한 송/수신때 DTD 나 XML schema 가 차지하는 용량이 대부분일거같아서요
저기에 공격이 포함될수 없다면, 서버는 단지 저것들을 참고해서 XML 문서가 유효한지 확인하는것뿐이라면
.dtd, .xsd 파일의 파싱을 하지않고 부하를 대폭 줄일수있을거같은데
잘모르겠네요

고수분들의 도움을 여쭙니다

익명 사용자의 이미지

valid XML인지 확인하려면 DTD나 schema가 반드시 필요하죠. 하지만 well-formed XML인지 확인하기 위해서는 DTD나 schema가 필요하지 않죠. XML문서를 사용하는 용도에 따라 반드시 valied XML일 필요가 없을 수도 있으니까요.

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.