맞춤 XML 마크업 작업

맞춤 XML 마크업 작업

사용자 지정 XML 마크업 작업

이 가이드는 Word 문서가 가시적인 콘텐츠와 함께 보유할 수 있는 사용자 지정 XML 데이터를 읽고 관리하는 방법을 보여줍니다 — 콘텐츠 컨트롤을 바인딩하고, 애플리케이션 별 메타데이터를 저장하거나, 임의의 패키지 파트를 포함하는 데 사용되는 데이터입니다. Document.CustomXmlParts는 문서 수준의 사용자 지정 XML 데이터를 노출하고, Document.PackageCustomParts는 특정하게 사용자 지정 XML가 아닌 패키지 수준의 사용자 지정 파트를 노출합니다.


사용자 지정 XML 파트

CustomXmlPart은(는) 문서에 연결된 하나의 사용자 지정 XML 데이터 섬을 나타냅니다 — Word가 XML 매핑된 콘텐츠 컨트롤을 지원하기 위해 사용하는 동일한 메커니즘입니다. 각 파트에는 Id, 원시 XML를 보유하는 Data 바이트 배열, DataChecksum, 그리고 해당 파트와 연관된 XML 스키마를 나열하는 Schemas 속성(CustomXmlSchemaCollection)이 있습니다. Document.CustomXmlParts은(는) CustomXmlPartCollection을 반환합니다: Add(part)은(는) 기존 CustomXmlPart를 연결하고, Add(id, xml)은(는) id와 XML 문자열에서 직접 하나를 생성하며, GetById(id)은(는) 특정 파트를 검색하고, RemoveAt(index)/Clear()은(는) 파트를 제거합니다. CustomXmlPart와 CustomXmlPartCollection는 모두 문서 간 콘텐츠 복사와 같이 사용자 지정 XML 데이터를 복제하기 위해 Clone()을(를) 노출합니다.

사용자 지정 XML 스키마

CustomXmlSchemaCollection은(는) CustomXmlPart.Schemas을(를) 통해 접근할 수 있으며, 사용자 지정 XML 파트와 연관된 스키마 URI를 나열합니다. 이는 Add(value), Remove(name), RemoveAt(index), IndexOf(value), Clear(), Clone()을 지원하며, Count 속성과 함께 제공됩니다 — 스키마 URI는 파싱된 스키마 객체가 아니라 단순 문자열로 추적됩니다.

사용자 지정 XML 속성

CustomXmlPart 와는 별도로, CustomXmlProperty 은 단일 이름/값 XML 속성을 나타내며, CustomXmlProperty(name, uri, value) 로 구성되고 Name, Uri, Value 를 노출합니다. CustomXmlPropertyCollection 은 이들의 집합을 관리합니다: Add(property) 은 하나를 추가하고, 인덱서(예: properties["MyProp"]) 는 이름으로 하나를 찾아 Contains(name) 로 존재 여부를 테스트하며, IndexOfKey(name) 은 그 위치를 반환하고, Remove(name)/RemoveAt(index)/Clear() 은 항목을 제거합니다. SmartTag.Properties 은 CustomXmlPropertyCollection 를 반환하는데, 이는 레거시 스마트 태그의 구조화된 데이터가 표현되는 방식입니다(아래 참조).

패키지 수준 사용자 정의 파트

Document.PackageCustomParts 은 CustomPart 객체들의 CustomPartCollection 를 반환합니다 — 파일을 수정한 다른 애플리케이션이 추가한 파트와 같이 사용자 정의 XML 데이터가 아닌 OOXML 패키지에 저장된 임의의 파트입니다. 각 CustomPart 은 Name, ContentType, RelationshipType, Data 바이트 배열 및 IsExternal 플래그를 가지고 있으며, 이 플래그는 해당 파트가 임베디드 콘텐츠가 아니라 외부 참조인지 여부를 나타냅니다. 이 컬렉션은 Add(part), RemoveAt(index), Clear(), Clone() 를 지원하며, Count 도 포함합니다.

레거시 스마트 태그

SmartTag 은 인식된 텍스트를 둘러싼 레거시 Word 스마트 태그를 나타내는 노드 유형(NodeType.SmartTag)입니다. SmartTag 은 SmartTag(doc) 로 구성되며, Element(인식기 요소 이름)와 Uri(인식기의 네임스페이스)를 노출하고, Properties와 함께 — 인식기가 태그된 텍스트에 첨부한 구조화 데이터를 보유하는 CustomXmlPropertyCollection — 를 제공합니다. SmartTag 은 노드이기 때문에 다른 노드와 마찬가지로 문서 트리에 참여하며, DocumentVisitor 기반 탐색을 위해 Accept(visitor), AcceptStart(visitor), AcceptEnd(visitor) 를 지원합니다.

MarkupLevel

MarkupLevel 은 열거형이며 — Unknown, Inline, Block, Row, Cell — 문서 트리에서 구조화 문서 태그와 같은 마크업 요소가 발생할 수 있는 구조적 수준을 설명합니다.


팁 및 모범 사례

  • 필요하신 파트의 ID를 알고 있을 때 컬렉션을 수동으로 반복하는 대신 CustomXmlPartCollection.GetById(id)을 사용하십시오.
  • CustomXmlPart.DataChecksum을 읽어 전체 바이트 비교를 수행하지 않고 기본 XML 데이터가 변경되었는지 감지하십시오.
  • Document.CustomXmlParts(맞춤형 XML 데이터이며 종종 콘텐츠 컨트롤에 바인딩됨)와 Document.PackageCustomParts(임의의 비-XML 패키지 파트)를 구분하십시오 — 두 항목은 서로 다른 목적을 가지고 별도로 저장됩니다.
  • 스마트 태그를 사용하는 레거시 문서를 작업할 때는 SmartTag.Element와 Uri을 함께 확인하여 태그를 만든 인식기를 식별한 후에 Properties에 의존하십시오.
  • 문서 간에 데이터를 복사할 때 원시 XML을 다시 읽고 다시 추가하는 대신 CustomXmlPart.Clone()(또는 컬렉션의 Clone())을 사용하여 맞춤형 XML 파트를 복제하십시오.

일반적인 문제

문제원인해결 방법
CustomXmlPartCollection.GetById(id)은(는) 사용 가능한 결과를 반환하지 않습니다ID가 현재 Document.CustomXmlParts에 있는 어떤 파트와도 일치하지 않습니다컬렉션을 열거하여 ID를 확인하거나, 먼저 Add(id, xml)으로 파트를 추가하십시오
맞춤형 XML 데이터가 보이는 콘텐츠 컨트롤과 관련이 없는 것으로 보입니다콘텐츠 컨트롤은 자체 데이터 바인딩 구성으로 맞춤형 XML에 바인딩되며, 모든 CustomXmlPart에 자동으로 바인딩되지 않습니다주어진 콘텐츠 컨트롤이 바인드된 파트를 확인하고 Document.CustomXmlParts와 1:1 관계라고 가정하지 마십시오.
다른 애플리케이션이 추가한 패키지 파트를 CustomXmlParts에서 찾을 수 없습니다.Non-XML 패키지 파트는 Document.PackageCustomParts를 통해 노출되며 CustomXmlParts이 아닙니다.대신 PackageCustomParts (a CustomPartCollection)를 확인하십시오.
SmartTag.Properties이 비어 있습니다.모든 스마트 태그 인식기가 구조화된 속성을 부착하는 것은 아닙니다.특정 속성을 기대하기 전에 어떤 인식기가 태그를 생성했는지 확인하려면 SmartTag.Element/Uri를 확인하십시오.

FAQ

CustomXmlPart와 CustomXmlProperty의 차이점은 무엇입니까?

CustomXmlPart은 전체 XML 데이터 섬(바이트 배열 페이로드와 연관 스키마 포함)이며, Document.CustomXmlParts을 통해 접근합니다. CustomXmlProperty은 단일 이름/값 쌍으로, 일반적으로 문서에서 직접이 아니라 SmartTag.Properties을 통해 접근합니다.

문서에 custom XML 데이터를 추가하려면 어떻게 해야 하나요?

Document.CustomXmlParts.Add(id, xml)을 ID 문자열과 XML 콘텐츠와 함께 호출하거나, CustomXmlPart을 별도로 구성한 뒤 Add(part)에 전달합니다.

패키지 custom 파트는 무엇이며, custom XML 파트와는 어떻게 다릅니까?

Document.PackageCustomParts ( CustomPart 객체들의 CustomPartCollection )는 custom XML이 아닌 임의의 OOXML 패키지 파트를 보유합니다 — 각 파트는 ContentType, RelationshipType, 그리고 원시 Data를 가집니다. Document.CustomXmlParts은 특별히 custom XML 데이터 섬을 위해 사용됩니다.

SmartTag이란 무엇인가요?

SmartTag은 스마트 태그 인식기에 의해 인식되고 감싸진 텍스트를 나타내는 레거시 Word 기능입니다. 이는 NodeType.SmartTag인 문서 노드이며, 인식기를 식별하는 Element와 Uri을 가지고, 인식기가 부착한 CustomXmlProperty 값들의 Properties 컬렉션을 포함합니다.

문서 간에 custom XML 데이터를 복사하려면 어떻게 해야 하나요?

소스 파트에 CustomXmlPart.Clone()을(를) 사용한 다음, 복제본을 대상 문서의 Document.CustomXmlParts에 Add(part)와 함께 추가하십시오.


API Reference 요약

클래스/메서드설명
CustomXmlPart문서에 첨부된 단일 맞춤형 XML 데이터 섬
Document.CustomXmlParts문서에 있는 모든 맞춤형 XML 파트의 CustomXmlPartCollection
CustomXmlPartCollection.Add(id, xml) / GetById(id)ID로 맞춤형 XML 파트를 추가하거나 검색
CustomXmlSchemaCollectionCustomXmlPart와 연관된 스키마 URI
CustomXmlProperty단일 이름/값 XML 속성
CustomXmlPropertyCollection여러 CustomXmlProperty 값의 집합, 예: SmartTag.Properties에서
Document.PackageCustomParts임의의 비-XML OOXML 패키지 파트들의 CustomPartCollection
CustomPart하나의 패키지 수준 사용자 정의 파트에 Name, ContentType, 그리고 원시 Data가 포함됨
SmartTag스마트 태그 인식기에 의해 인식되는 텍스트를 래핑하는 레거시 노드 유형
MarkupLevel문서 트리에서 마크업 요소가 발생할 수 있는 위치를 설명하는 Enum

참조

 한국어