우리는 다시 XML에 대한 연구를 계속하고 이 기사에서는 처리 지침, 주석, 속성 및 기타 XML 요소와 같은 XML 구성에 대해 알게 될 것입니다. 이러한 요소는 기본적이며 표준을 엄격히 준수하여 모든 복잡성의 문서를 유연하게 마크업할 수 있습니다.

XML 태그와 같은 일부 사항은 이전 기사 ""에서 이미 부분적으로 고려했습니다. 이제 우리는 이 주제를 다시 한번 다루며 더 자세히 분석할 것입니다. 이것은 XML 구성의 전체 그림을 보다 쉽게 ​​시각화할 수 있도록 의도적으로 수행됩니다.

XML 요소. 비어 있거나 비어 있지 않은 XML 요소

이전 기사에서 언급했듯이 XML의 태그는 HTML의 경우처럼 텍스트를 마크업할 뿐만 아니라 개별 요소(객체)를 선별합니다. 차례로 요소는 문서의 정보를 계층적으로 구성하여 XML 언어의 기본 구조 단위가 되었습니다.

XML에서 요소는 비어 있거나 비어 있지 않은 두 가지 유형이 될 수 있습니다. 빈 요소는 텍스트 또는 기타 구성과 같은 데이터를 포함하지 않습니다. 빈 요소와 달리 비어 있지 않은 요소는 텍스트 또는 기타 XML 요소 및 구성과 같은 모든 데이터를 포함할 수 있습니다. 위의 요지를 이해하기 위해 비어 있지 않은 XML 요소의 예를 살펴보겠습니다.

빈 XML 요소

비어 있지 않은 XML 요소

요소 내용...

위의 예에서 볼 수 있듯이 비어 있는 요소와 비어 있지 않은 요소의 주요 차이점은 하나의 태그로만 구성된다는 것입니다. 또한 XML에서 모든 이름은 대소문자를 구분합니다. 이것은 이름이 myElement, MyElement, MYELEMENT 등임을 의미합니다. 다르기 때문에 이 순간미래의 실수를 피하기 위해 즉시 기억해야합니다.
그래서 우리는 요소를 알아 냈습니다. 이제 XML 문서의 논리적 구성과 같은 다음 요점으로 넘어갑시다.

XML 문서의 논리적 구성. XML 데이터의 트리 구조

기억하시겠지만, XML 언어의 주요 구조는 다른 중첩 구조를 포함할 수 있는 요소이며 따라서 트리 형태의 계층 구조를 형성합니다. 이 경우 부모 요소는 루트가 되고 다른 모든 요소는 자식 요소 XML 트리의 가지와 잎이 됩니다.

위의 내용을 좀 더 쉽게 이해할 수 있도록 다음 이미지를 예로 들어 보겠습니다.

우리가 볼 수 있듯이, 트리 형태의 XML 문서 구성은 처리하기에 상당히 간단한 구조입니다. 동시에 나무 자체의 표현 복잡성은 상당히 큽니다. XML에서 개체를 설명하는 가장 최적의 방법은 트리 표현입니다.

XML 속성. XML의 속성 작성 규칙

XML에서 요소는 작은 따옴표 또는 큰 따옴표로 묶인 값이 할당된 속성을 포함할 수도 있습니다. 요소의 속성은 다음과 같이 설정됩니다.

이 경우 이름이 "속성"이고 값이 "값"인 속성이 사용되었습니다. 여기에서 XML 속성은 어떤 값을 포함해야 하고 비워 둘 수 없다는 사실을 바로 알아차릴 가치가 있습니다. 그렇지 않으면 코드가 XML 측면에서 올바르지 않습니다.

따옴표 사용에도 주의해야 합니다. 속성 값은 작은따옴표나 큰따옴표로 묶을 수 있습니다. 또한 다른 사람 안에 일부 따옴표를 사용하는 것도 가능합니다. 시연하기 위해 다음 예를 고려하십시오.

다른 XML 구성을 고려하기 전에 속성을 생성할 때 다음과 같은 점에 유의해야 합니다. 특수 기호, 앰퍼샌드 "&" 또는 꺾쇠 괄호 "<>". 이러한 문자는 제어 문자로 예약되어 있습니다("&"는 엔터티이고 "<» и «>" 요소 태그를 열고 닫음) "순수한" 방식으로 사용할 수 없습니다. 그것들을 사용하려면 특수 문자를 대체해야 합니다.

XML 처리 명령(처리 명령). XML 선언

XML에서는 특정 문서를 처리할 응용 프로그램에 대한 특정 정보를 포함하는 지침을 문서에 포함할 수 있습니다. XML의 처리 명령은 다음과 같이 생성됩니다.

위의 예에서 볼 수 있듯이 XML에서 처리 명령은 각진 따옴표와 물음표로 묶여 있습니다. 이것은 우리가 첫 번째 PHP 튜토리얼에서 보았던 일반적인 것과 약간 비슷합니다. 처리 명령의 첫 번째 부분은 이 명령 또는 해당 내용의 두 번째 부분이 사용되는 응용 프로그램이나 시스템을 정의합니다. 그러나 처리 지침은 해당 지침이 지정된 응용 프로그램에 대해서만 유효합니다. 처리 명령의 예는 다음 명령입니다.

XML에는 처리 명령과 매우 흡사하지만 그 자체가 아닌 특수한 구조가 있다는 점은 주목할 가치가 있습니다. 이것은 처리에 전달되는 XML 선언입니다. 소프트웨어인코딩, 작성된 언어 버전과 같은 XML 문서의 속성에 대한 일부 정보 이 문서등.

위의 예에서 볼 수 있듯이 XML 선언에는 위에서 이야기한 일반 속성과 매우 유사한 소위 의사 속성이 포함되어 있습니다. 이는 정의에 따라 XML 선언과 처리 명령이 속성을 포함할 수 없기 때문에 이러한 선언을 의사 속성이라고 합니다. 다양한 오류를 피하기 위해 미래를 위해 기억할 가치가 있습니다.

우리는 의사 속성을 다루었으므로 그들이 의미하는 바를 살펴보겠습니다.

  • 인코딩 - XML ​​문서 인코딩을 담당합니다. 일반적으로 인코딩은 UTF8입니다.
  • 버전 - 이 문서가 작성된 XML 언어의 버전입니다. 이것은 일반적으로 XML 버전 1.0입니다.

글쎄, 이제 기사의 마지막 부분으로 이동하여 주석 및 CDATA 섹션과 같은 XML 구성을 살펴보겠습니다.

xml에 큰 따옴표에 대한 이스케이프 문자가 있습니까? 다음과 같은 태그를 작성하고 싶습니다.

하지만 내가 "를 넣으면 줄이 끝남을 의미합니다. 다음과 같은 것이 필요합니다(C++).

Printf("인용 = \" ");

그것을 이스케이프하기 위해 큰 따옴표 앞에 써야 할 문자가 있습니까?

오래되고 자주 묻는 질문에 대한 새롭고 향상된 답변...

XML에서 큰따옴표를 이스케이프해야 하는 경우

큰따옴표(")가 나타날 수 있습니다. 출구가 없다 :

    XML 텍스트 콘텐츠:

    그는 "나를 인용하지 말라"고 말했다.

    작은따옴표(")로 구분된 XML 속성에서:

    메모:작은따옴표(")로 전달할 때도 이스케이프가 필요하지 않습니다.

큰따옴표(") 차폐되어야 한다 :

    큰따옴표로 구분된 XML 속성:

결론

큰따옴표(")는 매우 제한된 컨텍스트에서 "in XML"로 이스케이프되어야 합니다.

무언가를 빨리 시도해야 하는 경우 여기에 빠르고 더러운 솔루션이 있습니다. 속성 값에 작은따옴표를 사용합니다.

C++에서는 EscapeXML ATL API를 사용할 수 있습니다. 이것은 특수 문자를 처리하는 올바른 방법입니다 ...

다음은 큰따옴표로 시작하는 XML에서 이스케이프되어야 하는 일반적인 문자입니다.

  1. 큰따옴표(")가 "로 이스케이프됩니다.
  2. 앰퍼샌드(&)는 &로 이스케이프합니다.
  3. 작은따옴표(")가 "로 이스케이프됩니다.
  4. 더 적은 (<), экранируется до <
  5. 보다 큼(>), >로 이스케이프

다른 사람들은 이 경우 특정 탈출을 처리하는 방법에 대해 답변했습니다.

더 넓은 대답은 스스로 하려고 하지 말라는 것입니다. XML API를 사용하십시오. 거의 모든 최신 프로그래밍 플랫폼에서 사용할 수 있는 API가 많습니다.

XML API는 이와 같은 작업을 자동으로 처리하여 많이잘못되기가 더 어렵습니다. XML API를 직접 작성하지 않는 한 이러한 세부 사항에 대해 거의 걱정할 필요가 없습니다.

오랫동안 표준은 일반 따옴표를 삽입하도록 규정합니다. HTML 텍스트"태그 내에서 따옴표 "" 구성을 사용하여 속성을 나타냅니다.

그러나 나는 아직 따옴표로 표시되지 않는 브라우저를 만나지 못했습니다. "OUTSIDE of any tags. 그러니 말해 주세요. 친애하는 동료 여러분, 태그 외부에서 사용하는 것은 단순히 불필요한 지루함입니까? 당신은 침착하고 더 이상 고민하지 않고 "?"라고 쓸 수 있습니다. 특히 인용 부호가 많고 엄격한 디자인 규칙(국가 인용 부호의 올바른 사용에 대한)을 준수하는 것과 관련이 없는 텍스트에서.

IMHO, 많은 사람들이 이렇게 합니다... 하지만 질문은 완전히 명확하지 않습니다. 표준에 따라 "와 같은 인용문을 작성해야 한다는 것을 이해한다면, 하지만 많은 사이트가 그렇게 작동한다는 사실에도 불구하고 게으르게도 새 버전의 브라우저에서 따옴표 표시가 지원되는지 여부는 아무도 모르기 때문에 가장 확실한 권장 사항은 다음과 같습니다. 100% 기준 :) 하지만 이미 알고 계시겠지만 그게 다예요 잊어버리세요 10년 뒤에는 모든 것이 똑같을 거에요 제가 (Microsoft, Mozilla 등) 보증합니까?

린 "커피맨"[서류]
예, 그건 그렇고 ... 이제 읽을 때 유용합니다. 따옴표를 "
http://www2.stack.ru/~julia/HTML401/charset.html :

일부 작성자는 문자 엔티티 참조 """를 사용하여 큰따옴표(")의 인스턴스를 인코딩합니다. 이 문자는 속성 값을 구분하는 데 사용할 수 있기 때문입니다.

무엇에 대해, 필요그것에 대해서만 언급되는 엔티티를 정확히 사용하십시오.<, >그리고 &:

작가가 캐릭터를 넣고 싶다면 "<", во избежание возможной путаницы с началом тега (метка начала тега) он должен использовать ссылку "<" (десятичный код ASCII 60). Точно так же во избежание проблем со старыми версиями пользовательских агентов, некорректно принимающих символы ">" 태그 끝(태그 끝 표시)에 대해서는 참조 ">"(ASCII 십진수 코드 62)를 사용해야 합니다.

문자 참조(문자 참조 시작 마커)와 혼동을 피하기 위해 "&" 대신 "&" 참조(ASCII 십진수 코드 38)를 사용해야 합니다. 또한 CDATA 속성 값 내에서 문자 참조가 허용되기 때문에 "&" 참조도 속성 값에 사용해야 합니다.

그러나 나는 Lynn의 대답과 같은 것을 기대하고 있습니다. 실제로 그러한 표준은 없습니다. 그것은 나에게 발생하지도 않았습니다. 내 정보는 인기 있는 교과서에서 가져온 것이며 "모든 사람이 하는 일" 때문입니다.

또는 다른 옵션: 하지만 xhtml(정확히 xhtml을 확인함)과 같이 내 실습에서 만나지 못한 새로운 표준을 따른다면 그러한 트릭은 작동하지 않을 것입니다. 따라서 작성된 HTML 코드에 대해 이식성 문제를 만들 필요가 없습니다.

또는 마지막으로 스스로 어떻게 합니까?

그런데 &는 비슷한 질문을 생성합니다. 위 문서에는 "혼동을 피하기 위해"라고 나와 있습니다. 그러나 & 다음에 제공된 코드 중 하나가 오는 경우에만 혼동이 가능합니다. 예를 들어 "..../script?A=1&B=2"와 같은 URL이면 어떻게 됩니까? 실수로 이러한 URL을 href(테스트 중에 올바르게 작동함)로 지정했다면 위험을 감수해야 합니까? 10년 안에(사이트가 구식이거나 이미 10번 다시 작성되었을 때) 예고편 없이 호화로운 이름 &B를 가진 엔터티가 있을 것이라는 극히 희박한 상황을 제외한 모든 것; ? 즉, 그러한 모든 경우를 얼마나 주의 깊게 확인해야 합니까?

다니엘, 기존 코드에 문제가 없다고 확신한다면 간단히 &를 쓰면 됩니다. 앞으로 나타날 경우 새 코드- 그러면 HTML 4.01 사양이 아닌 명시적으로 선언될 것이므로 일반적으로 선언된 문서에 영향을 미치지 않아야 합니다. 또는 다음을 통해 미래 표준에 대한 지원을 확보할 것으로 예상하십니까? 간단한 변경문서 스키마?

다니엘 알리예프스키[서류]
XML에서는 텍스트로 된 일반적인 인용문도 문제가 되지 않습니다(물론 XHTML에서는 각각). IMHO 인용문은 일반적으로 한 가지 이유로 "로 번역됩니다. XML / HTML / XHTML로 대체할 때 텍스트를 안전한 형식으로 가져오는 두 가지 함수를 작성하고 싶지는 않습니다.

안녕하세요, 사이트 방문자 여러분! XML 마크업 언어의 주제를 계속해서 살펴보고 속성의 사용을 살펴보겠습니다. 속성은 HTML과 마찬가지로 XML 요소에 존재할 수 있습니다. 속성 제공 추가 정보요소에 대해.

XML 속성

HTML 속성요소에 대한 추가 정보 제공:

XML 속성은 따옴표로 묶어야 합니다.

가치 xml의 ​​속성항상 따옴표로 묶어야 합니다. 작은따옴표와 큰따옴표를 모두 사용할 수 있습니다. 사람 요소의 성별을 지정하려면 다음과 같이 작성할 수 있습니다.

속성 값 자체에 큰따옴표가 포함되어 있으면 다음 예와 같이 작은따옴표를 사용할 수 있습니다.

XML 요소와 속성

다음 예를 살펴보십시오.

빅토리아
페트로바

여자
빅토리아
페트로바

첫 번째 예에서 성별(성별)은 속성입니다. 후자에서 섹스는 요소입니다. 두 예 모두 동일한 정보를 제공합니다.

언제 속성을 사용하고 언제 요소를 사용해야 하는지에 대한 규칙은 없습니다. 속성은 HTML에서 편리합니다. XML에서는 그것들을 피하는 것이 좋습니다. 대신 요소를 사용하십시오.

내가 가장 좋아하는 방법

다음 세 개의 XML 문서에는 정확히 동일한 정보가 포함되어 있습니다.

날짜 XML 속성은 첫 번째 예에서 사용됩니다.

확장된 날짜 요소는 세 번째 요소에서 사용됩니다. (이것이 MY FAVORITE WAY입니다):



10
01
2008

페티야
스베타
알림

XML 속성을 피하시겠습니까?

xml 속성 사용과 관련된 몇 가지 문제:

  • 속성은 여러 값을 포함할 수 없습니다(요소는 가능)
  • 속성은 트리 구조를 포함할 수 없습니다(요소는 가능).
  • 속성은 확장하기가 더 어렵습니다(향후 변경을 위해)

다음과 같이 하지 마십시오.

to="Vasya" from="Sveta" 제목="알림"
body="내일 전화하는 것 잊지 마세요!">

메타데이터에 대한 XML 속성



바샤
스베타
알림
내일 전화하는 것을 잊지 마세요!


스베타
바샤
Re: 알림
확인

위의 id 속성은 다른 메모를 식별하는 데 사용됩니다. 메모 자체의 일부가 아닙니다.

여기서 말하려는 것은 메타데이터(데이터에 대한 데이터)는 xml 속성으로 저장되어야 하고 데이터 자체는 요소로 저장되어야 한다는 것입니다.

관심을 가져 주셔서 감사합니다!.

HTML에서와 같이, XML 요소속성을 가질 수 있습니다. 동시에 가치는 XML의 속성생성 규칙은 여러 면에서 와 유사합니다.

속성은 요소에 대한 추가 정보를 제공합니다.

XML 속성

HTML에서 속성은 요소에 대한 몇 가지 추가 정보를 제공합니다.

속성은 종종 데이터의 일부가 아닌 정보를 제공합니다. 아래 예에서 파일 유형은 데이터에 의존하지 않지만 이 정보는 이 요소를 조작할 애플리케이션에 중요할 수 있습니다.

컴퓨터.gif

XML 속성은 따옴표로 묶어야 합니다.

속성 값은 항상 따옴표로 묶어야 합니다. 큰따옴표나 작은따옴표일 수 있습니다. 예를 들어 캐릭터의 성별은 다음과 같이 쓸 수 있습니다.

다음과 같이

속성 값 자체에 큰따옴표가 포함된 경우 작은따옴표를 사용할 수 있습니다. 예를 들어:

또는 엔티티 기호를 사용하십시오.

XML 요소 또는 속성

다음 예를 보십시오.

예 #1

안나 스미스

예 #2

여자 안나 스미스

첫 번째 예에서 성별은 속성에 지정됩니다. 두 번째에서는 성별을 요소로 작성합니다. 두 예 모두 동일한 정보를 제공합니다.

속성을 사용할 때와 요소를 사용할 때를 제어하는 ​​규칙은 없습니다. 속성은 HTML에서 널리 사용됩니다. XML에서는 이러한 요소를 피하고 대신 요소를 사용하는 것이 가장 좋습니다.

더 나은 것은 무엇입니까?

다음 세 개의 XML 문서에는 정확히 동일한 정보가 포함되어 있습니다.

날짜는 속성으로 기록됩니다.:

토베 자니 알림

날짜는 요소로 작성됩니다.:

10/01/2008 토베 자니 알림 이번 주말에 저를 잊지 마세요!

날짜는 확장된 요소로 작성됩니다.(제 생각에는 최선의 선택입니다):

10 01 2008 토베 자니 알림 이번 주말에 저를 잊지 마세요!

XML 속성을 피하시겠습니까?

속성을 사용할 때 몇 가지 문제가 있습니다.

  • 속성은 여러 값을 포함할 수 없습니다(요소는 가능)
  • 속성은 트리 구조를 포함할 수 없습니다(요소는 가능).
  • 속성은 확장하기 어렵습니다(향후 변경 사항에 대해)

다음 구문을 사용하지 마십시오.

메타데이터의 XML 속성

때로는 요소에 식별자가 제공됩니다. 이러한 식별자는 HTML의 식별 속성과 정확히 동일한 방식으로 XML 요소를 식별하는 데 사용됩니다. 다음 예에서는 이를 보여줍니다.

토베 자니 알림 이번 주말에 저를 잊지 마세요! 자니 토베 Re: 알림 난 잊지 않을거야

위의 예에서 id 속성은 다른 메모를 식별하는 데 사용됩니다. 이 정보는 메모 자체의 일부가 아닙니다.

지금까지 언급된 모든 것의 주요 아이디어는 메타데이터(데이터에 대한 데이터)는 속성으로 작성되어야 하고 데이터 자체는 요소로 작성되어야 한다는 것입니다.