StoryFragment 클래스

정의

XPS 문서 내 텍스트 영역의 전체 또는 일부를 나타냅니다.Represents all or part of a story within an XPS document.

public ref class StoryFragment : System::Collections::Generic::IEnumerable<System::Windows::Documents::DocumentStructures::BlockElement ^>, System::Windows::Markup::IAddChild
[System.Windows.Markup.ContentProperty("BlockElementList")]
public class StoryFragment : System.Collections.Generic.IEnumerable<System.Windows.Documents.DocumentStructures.BlockElement>, System.Windows.Markup.IAddChild
type StoryFragment = class
    interface IAddChild
    interface seq<BlockElement>
    interface IEnumerable
Public Class StoryFragment
Implements IAddChild, IEnumerable(Of BlockElement)
상속
StoryFragment
특성
구현

예제

다음 예제에서는 합니다 <StoryFragment> 부분을 XPS(XML Paper Specification)XML Paper Specification (XPS) 문서.The following example shows the <StoryFragment> part of an XPS(XML Paper Specification)XML Paper Specification (XPS) document.

<StoryFragment StoryName="DocumentBody" FragmentType="Content">
  <SectionStructure>
    <ParagraphStructure>
      <NamedElement NameReference="Pg1Heading1" />
    </ParagraphStructure>

    <ParagraphStructure>
      <NamedElement NameReference="Pg1P1" />
    </ParagraphStructure>

    <ParagraphStructure>
      <NamedElement NameReference="Pg1P2" />
    </ParagraphStructure>

    <ParagraphStructure>
      <NamedElement NameReference="Pg1P3" />
    </ParagraphStructure>

    <ParagraphStructure>
      <NamedElement NameReference="Pg1P4" />
    </ParagraphStructure>

    <ParagraphStructure>
      <NamedElement NameReference="Pg1P5" />
    </ParagraphStructure>

    <ParagraphStructure>
      <NamedElement NameReference="Pg1Heading2" />
    </ParagraphStructure>

    <ParagraphStructure>
      <NamedElement NameReference="Pg1P6" />
    </ParagraphStructure>

    <ParagraphStructure>
      <NamedElement NameReference="Pg1P7" />
    </ParagraphStructure>

    <TableStructure>
      <TableRowGroupStructure>

        <TableRowStructure>
          <TableCellStructure>
            <ParagraphStructure>
              <NamedElement NameReference="R1C1P1" />
            </ParagraphStructure>
          </TableCellStructure>
          <TableCellStructure>
            <ParagraphStructure>
              <NamedElement NameReference="R1C2P1" />
            </ParagraphStructure>
          </TableCellStructure>
        </TableRowStructure>

        <TableRowStructure>
          <TableCellStructure>
            <ParagraphStructure>
              <NamedElement NameReference="R2C1P1" />
            </ParagraphStructure>
          </TableCellStructure>
          <TableCellStructure>
            <ParagraphStructure>
              <NamedElement NameReference="R2C2P1" />
            </ParagraphStructure>
            <ParagraphStructure>
              <NamedElement NameReference="R2C2P2" />
            </ParagraphStructure>
          </TableCellStructure>
        </TableRowStructure>

        <TableRowStructure>
          <TableCellStructure>
            <ParagraphStructure>
              <NamedElement NameReference="R3C1P1" />
            </ParagraphStructure>
          </TableCellStructure>
          <TableCellStructure>
            <ParagraphStructure>
              <NamedElement NameReference="R3C2P1" />
            </ParagraphStructure>
          </TableCellStructure>
        </TableRowStructure>

        <TableRowStructure>
          <TableCellStructure>
            <ParagraphStructure>
              <NamedElement NameReference="R4C1P1" />
            </ParagraphStructure>
          </TableCellStructure>
          <TableCellStructure>
            <ParagraphStructure>
              <NamedElement NameReference="R4C2P1" />
            </ParagraphStructure>
          </TableCellStructure>
        </TableRowStructure>

        <TableRowStructure>
          <TableCellStructure>
            <ParagraphStructure>
              <NamedElement NameReference="R5C1P1" />
            </ParagraphStructure>
          </TableCellStructure>
          <TableCellStructure>
            <ParagraphStructure>
              <NamedElement NameReference="R5C2P1" />
            </ParagraphStructure>
          </TableCellStructure>
        </TableRowStructure>

      </TableRowGroupStructure>
    </TableStructure>
  </SectionStructure>
</StoryFragment>

설명

XPSXPS 문서의 XPS 스토리는 신문 또는 잡지의 스토리와 거의 유사 합니다.An XPS story in an XPSXPS document is roughly analogous to a story in a newspaper or magazine. 단일 XPSXPS 문서 내에서 일반적으로 단일 항목에 대 한 텍스트 및 그래픽 콘텐츠의 통로입니다.It is a passage of text and graphic content, usually on a single topic, within a single XPSXPS document. 일반적으로 여러 페이지에 걸쳐 있지만 잡지에서 사이드바와 같은 페이지 보다 짧을 수 있습니다.Typically, it spans multiple pages, but it can be shorter than a page like a sidebar - boxed story - in a magazine. 스토리 4 페이지에서 계속 되는 프런트 페이지 신문 스토리와 같은 불연속 수도 있습니다.A story can also be discontinuous like a front page newspaper story that is continued on page 4. 결과적으로 지정된 된 페이지는 둘 이상의 스토리 및 하나 이상의 텍스트 부분을 가질 수 있습니다.Consequently, a given page can have more than one story and parts of more than one story. 머리글 또는 바닥글을 한 페이지에 완전히 포함 된 스토리는 특수 한 유형의 이기도 합니다.A header or footer is also a special kind of story that is entirely contained on a single page.

StoryFragment는 스토리의 전체 또는 일부를 나타냅니다.A StoryFragment represents all or a portion of a story. 둘 이상의 페이지에 걸쳐 있을 수 있지만 전체 페이지를 차지 하거나 다른 조각을 사용 하 여 페이지를 공유할 수 있습니다.It can never span more than one page, but it can occupy the whole of a page or share a page with other fragments. 스토리 둘 이상의 페이지에 있으면 각 페이지에서 각 부분은 별도 조각입니다.If a story is on more than one page, each part of it on each page is a separate fragment. 스토리 조각의 불연속 집합 수 있지만, 없습니다 조각 자체 수 연속 되지 않은 합니다.Although stories can have discontinuous sets of fragments, no fragment can itself be discontinuous.

StoryFragments 요소만 StoryFragment의 부모일 수 있습니다.Only a StoryFragments element can be a parent of a StoryFragment. StoryFragment 내에서 StoryBreak 요소의 위치는 스토리가 여러 조각에 포함 되어 있는지와 추가 조각이 현재 조각 앞 이나 뒤에 있는지를 나타냅니다.The location of the StoryBreak elements within a StoryFragment indicates if the story is contained in multiple fragments, and if the additional fragments either precede or follow the current fragment.

경우는 StoryFragment 일부 구조 요소 중간 끝; 예를 들어를 <TableRowGroupStructure>, 다음 XPSXPS 문서를 생성 하는 애플리케이션 요소에 대 한 적절 한 끝 태그를 삽입 해야 합니다 (이 경우 </TableRowGroupStructure>) 하기 전에 </StoryFragment> 태그에 하지만 이후 조각에 구조를 계속 되 고 됩니다.When a StoryFragment ends in the middle of some structural element; say a <TableRowGroupStructure>, then XPSXPS document-producing applications must insert an appropriate end tag for the element (in this case </TableRowGroupStructure>) before the </StoryFragment> tag, even though the structure is being continued in a later fragment. StoryFragment 내의 요소 트리가 올바른 XML 인지 확인 하는 데 필요 합니다. 스토리를 계속 하는 조각은 중단 된 구조에 대 한 여는 태그를 사용 하 여 시작 해야 합니다.(This is necessary to ensure that the element tree within the StoryFragment is valid XML.) The fragment that continues the story must begin with an opening tag for the interrupted structure. 중단 된 구조체의 전체 트리 (단, 아래에서 설명)와 동일한 방식으로 처리 해야 합니다: 중단 된 위치에 위의 모든 일치 하지 않는 시작 태그에 대 한 끝 태그를 추가 해야 합니다.The entire tree of interrupted structures must be treated the same way (with one exception, discussed below): End tags must be added for every unmatched start tag above the point of interruption.

예외 스토리 중단 직후에 발생 하는 경우에 적용 됩니다는 </TableCellStructure> 태그를 생성 애플리케이션에는 빈 테이블 셀 구조를 삽입 해야 하는 다음 (<TableCellStructure></TableCellStructure>) 스토리를 진행 하는 조각에 해당 시점입니다.The exception applies when the story interruption comes immediately after a </TableCellStructure> tag, then the producing application must insert an empty table cell structure (<TableCellStructure></TableCellStructure>) at the corresponding point in the fragment that continues the story. 지정된 스토리의 모든 조각을 병합 해야 하는 애플리케이션이이 작업을 수행 하는 간단한 알고리즘을 사용할 수 있도록이 작업이 필요 합니다.This is necessary so that consuming applications that need to merge all fragments of a given story can use a simple algorithm to do this.

있다고 가정 하겠습니다. 예를 들어, 애플리케이션에서는 다음 내용에 추가 하고자 하는 XPSXPS 문서:Assume, for example, that an application wanted to add the following material to an XPSXPS document:

<SectionStructure>  
   <TableStructure>  
      <TableRowGroupStructure>  
         <TableRowStructure>  
            <TableCellStructure>  
               <ParagraphStructure>  
                  <NamedElement NameReference="SomeContent" />  
               </ParagraphStructure>  
            </TableCellStructure>  
            <TableCellStructure>  
               <ParagraphStructure>  
                  <NamedElement NameReference="MoreContent" />  
               </ParagraphStructure>  
            </TableCellStructure>  
         </TableRowStructure>  
         <TableRowStructure>  
            <TableCellStructure>  
               <ParagraphStructure>  
                  <NamedElement NameReference="EvenMoreContent" />  
               </ParagraphStructure>  
            </TableCellStructure>  
            <TableCellStructure>  
               <ParagraphStructure>  
                  <NamedElement NameReference="LastContent" />  
               </ParagraphStructure>  
            </TableCellStructure>  
         </TableRowStructure>  
      </TableRowGroupStructure>  
   </TableStructure>  
</SectionStructure>  

조각 페이지 나누기를 강제로 종료 하는 경우 바로 뒤의 </TableCellStructure> "SomeContent"에 대 한 애플리케이션은 다음 예와에서 같이 분할을 만들어야 합니다.If a page break forces an end to the fragment just after the </TableCellStructure> for "SomeContent", the application must create the split as shown in the following example:

<StoryFragment StoryName="MyStory" FragmentType="Content">  
 <SectionStructure>  
    <TableStructure>  
       <TableRowGroupStructure>  
          <TableRowStructure>  
             <TableCellStructure>  
                <ParagraphStructure>  
                   <NamedElement NameReference="SomeContent" />  
                </ParagraphStructure>   
             </TableCellStructure>  
<!-- lines from here to end of fragment added by producer-->  
          </TableRowStructure>  
       </TableRowGroupStructure>  
    </TableStructure>  
 </SectionStructure>  
</StoryFragment>  
  
<StoryFragment StoryName="MyStory" FragmentType="Content">  
 <SectionStructure>  
    <TableStructure>  
       <TableRowGroupStructure>  
          <TableRowStructure>  
             <TableCellStructure>   
              <!-- extra cell added by producer-->  
             </TableCellStructure>  
<!-- lines from here to start of fragment added by producer-->  
             <TableCellStructure>  
                <ParagraphStructure>  
                   <NamedElement NameReference="MoreContent" />  
                </ParagraphStructure>  
             </TableCellStructure>  
          </TableRowStructure>  
          <TableRowStructure>  
             <TableCellStructure>  
                <ParagraphStructure>  
                   <NamedElement NameReference="EvenMoreContent" />  
                </ParagraphStructure>  
             </TableCellStructure>  
             <TableCellStructure>  
                <ParagraphStructure>  
                   <NamedElement NameReference="LastContent" />  
                </ParagraphStructure>  
             </TableCellStructure>  
          </TableRowStructure>  
       </TableRowGroupStructure>  
    </TableStructure>  
 </SectionStructure>  
</StoryFragment>  

문서를 읽는 애플리케이션을이 콘텐츠를 병합 해야 합니다.An application that reads the document might need to merge this content. 예를 들어, 사용 하 여 XPS 뷰어는 클립보드로 복사 전체 스토리 ; 단추 또는 시각 장애인 들에 대 한 XPS 음성 신시사이저에 스토리를 전달 하는 애플리케이션입니다.Consider, for example, an XPS viewer with a Copy Whole Story to Clipboard button; or an XPS for the Blind application that passed stories to a voice synthesizer. 문서를 읽는 일부 애플리케이션을 스토리의 조각 중 일부를 병합 해야 합니다.Some applications that read the document may need to merge a subset of the fragments of a story. 예를 들어, 세 번 클릭 하 여 클립보드에 전체 단락을 복사 하는 기능은 단락이 페이지 나누기가 될 때마다 병합을 수행 해야 합니다. 이러한 단락은 두 StoryFragments 간에 분할 되기 때문입니다.For example, a feature that copies a whole paragraph to the clipboard by triple-clicking it would need to do a merge whenever the paragraph spanned a page break, because such a paragraph would be split between two StoryFragments.

병합 하려면이 알고리즘을 사용 합니다.To merge use this algorithm:

  1. 병합할 첫 번째 조각의 끝에서 </StoryFragment>를 삭제 하 고 두 번째 조각의 시작 부분에서 <StoryFragment>을 삭제 합니다.Delete the </StoryFragment> from the end of the first fragment to be merged and delete the <StoryFragment> from the beginning of the second.

  2. 첫 번째 조각의 마지막 닫는 태그가 두 번째 조각의 첫 번째 여는 태그와 동일한 형식이 고 <NamedElement> 태그가 아닌 경우 모두 삭제 합니다.If the last closing tag of the first fragment is of the same type as the first opening tag of the second fragment (and they are not <NamedElement> tags), delete them both.

  3. 두 조각이 다음 상태 중 하나 에 있을 때까지 2 단계를 반복 합니다.Repeat step 2 until the two fragments are in either of these states:

    • 선행 조각의 첫 번째 시작 태그 뒤에 오는 조각의 마지막 닫는 태그 사이의 형식 일치를 더 이상.There is no longer a type match between the last end tag of the leading fragment the first start tag of the trailing fragment.

    • 선행 조각의 마지막 끝 태그는 후행 조각의 첫 번째 시작 태그는 모두 <NamedElement> 태그입니다.The last end tag of the leading fragment the first start tag of the trailing fragment are both <NamedElement> tags.

위의 예에서 생성 애플리케이션에서 빈 셀을 추가 하지 않았다면 하는 경우 다음 조각의 병합기 표를 만듭니다. 첫 번째 행 인 원래 대신 "SomeContent" 및 "MoreContent" 참조를 먼저 포함 된 하나의 셀 했습니다 각 단일 참조를 포함 하는 두 개의 셀을 사용 하 여 행In the example above, if the empty cell had not been added by the producing application, then a merger of the fragments would produce a table whose first row had only one cell containing both the "SomeContent" and "MoreContent" references instead of the original first row with two cells, each containing a single reference

전체 영역을 병합 되는 경우 동일한 스토리의 일부인 각 후속 조각에 대 한 알고리즘을 반복 해야 합니다.When the entire story is being merged, the algorithm should be repeated for each subsequent fragment that is part of the same story. 스토리에 속한 조각은 <Story> 요소에서 인덱싱됩니다.The fragments that belong to a story are indexed in the <Story> element. XPS: 사양 및 라이선스 다운로드에서 얻을 수 있는 XPS(XML Paper Specification)XML Paper Specification (XPS) 9.1.15 섹션을 참조 하세요.See section 9.1.15 of the XPS(XML Paper Specification)XML Paper Specification (XPS) specification which you can obtain at XPS: Specification and License Downloads. 지정 된 스토리의 마지막 조각에는 마지막 자식으로 StoryBreak 요소가 포함 됩니다.The last fragment for a given story will have a StoryBreak element as its last child.

생성자

StoryFragment()

StoryFragment 클래스의 새 인스턴스를 초기화합니다.Initializes a new instance of the StoryFragment class.

속성

FragmentName

텍스트 영역 조각의 이름을 가져오거나 설정 합니다.Gets or sets the name of the story fragment.

FragmentType

조각의 형식을 가져오거나 설정 합니다.Gets or sets the type of fragment.

StoryName

영역의 이름을 가져오거나 설정 합니다.Gets or sets the name of the story.

메서드

Add(BlockElement)

텍스트 영역 조각에 블록을 추가 합니다.Add a block to the story fragment.

Equals(Object)

지정한 개체가 현재 개체와 같은지를 확인합니다.Determines whether the specified object is equal to the current object.

(다음에서 상속됨 Object)
GetHashCode()

기본 해시 함수로 작동합니다.Serves as the default hash function.

(다음에서 상속됨 Object)
GetType()

현재 인스턴스의 Type을 가져옵니다.Gets the Type of the current instance.

(다음에서 상속됨 Object)
MemberwiseClone()

현재 Object의 단순 복사본을 만듭니다.Creates a shallow copy of the current Object.

(다음에서 상속됨 Object)
ToString()

현재 개체를 나타내는 string을 반환합니다.Returns a string that represents the current object.

(다음에서 상속됨 Object)

명시적 인터페이스 구현

IAddChild.AddChild(Object)

이 멤버는 .NET Framework 인프라를 지원하며 사용자 코드에서 직접 사용할 수 없습니다.This member supports the .NET Framework infrastructure and is not intended to be used directly from your code.

IAddChild.AddText(String)

노드의 텍스트 콘텐츠를 개체에 추가합니다.Adds the text content of a node to the object.

IEnumerable.GetEnumerator()

이 메서드는 구현되지 않았습니다.This method has not been implemented.

IEnumerable<BlockElement>.GetEnumerator()

이 메서드는 구현되지 않았습니다.This method has not been implemented.

확장 메서드

CopyToDataTable<T>(IEnumerable<T>)

제네릭 매개 변수 TDataTable인 지정된 입력 DataRow 개체를 사용하여 IEnumerable<T> 개체의 복사본이 들어 있는 DataRow을 반환합니다.Returns a DataTable that contains copies of the DataRow objects, given an input IEnumerable<T> object where the generic parameter T is DataRow.

CopyToDataTable<T>(IEnumerable<T>, DataTable, LoadOption)

제네릭 매개 변수 TDataRow인 지정된 입력 DataTable 개체를 사용하여 IEnumerable<T> 개체를 지정된 DataRow에 복사합니다.Copies DataRow objects to the specified DataTable, given an input IEnumerable<T> object where the generic parameter T is DataRow.

CopyToDataTable<T>(IEnumerable<T>, DataTable, LoadOption, FillErrorEventHandler)

제네릭 매개 변수 TDataRow인 지정된 입력 DataTable 개체를 사용하여 IEnumerable<T> 개체를 지정된 DataRow에 복사합니다.Copies DataRow objects to the specified DataTable, given an input IEnumerable<T> object where the generic parameter T is DataRow.

Cast<TResult>(IEnumerable)

IEnumerable의 요소를 지정된 형식으로 캐스팅합니다.Casts the elements of an IEnumerable to the specified type.

OfType<TResult>(IEnumerable)

지정된 형식에 따라 IEnumerable의 요소를 필터링합니다.Filters the elements of an IEnumerable based on a specified type.

AsParallel(IEnumerable)

쿼리를 병렬화할 수 있도록 합니다.Enables parallelization of a query.

AsQueryable(IEnumerable)

IEnumerableIQueryable로 변환합니다.Converts an IEnumerable to an IQueryable.

Ancestors<T>(IEnumerable<T>)

소스 컬렉션에 있는 모든 노드의 상위 항목을 포함 하는 요소의 컬렉션을 반환 합니다.Returns a collection of elements that contains the ancestors of every node in the source collection.

Ancestors<T>(IEnumerable<T>, XName)

소스 컬렉션에 있는 모든 노드의 상위 항목이 들어 있는 필터링 된 요소 컬렉션을 반환 합니다.Returns a filtered collection of elements that contains the ancestors of every node in the source collection. 일치하는 XName이 있는 요소만 컬렉션에 포함됩니다.Only elements that have a matching XName are included in the collection.

DescendantNodes<T>(IEnumerable<T>)

소스 컬렉션에 있는 모든 문서 및 요소의 하위 노드의 컬렉션을 반환합니다.Returns a collection of the descendant nodes of every document and element in the source collection.

Descendants<T>(IEnumerable<T>)

소스 컬렉션에 있는 모든 요소 및 문서의 하위 요소가 들어 있는 요소 컬렉션을 반환합니다.Returns a collection of elements that contains the descendant elements of every element and document in the source collection.

Descendants<T>(IEnumerable<T>, XName)

소스 컬렉션에 있는 모든 요소 및 문서의 하위 요소가 들어 있는 필터링된 요소 컬렉션을 반환합니다.Returns a filtered collection of elements that contains the descendant elements of every element and document in the source collection. 일치하는 XName이 있는 요소만 컬렉션에 포함됩니다.Only elements that have a matching XName are included in the collection.

Elements<T>(IEnumerable<T>)

소스 컬렉션에 있는 자식 컬렉션의 모든 요소 및 문서의 요소를 반환합니다.Returns a collection of the child elements of every element and document in the source collection.

Elements<T>(IEnumerable<T>, XName)

소스 컬렉션의 필터링 된 자식 컬렉션을 모든 요소 및 문서의 요소를 반환합니다.Returns a filtered collection of the child elements of every element and document in the source collection. 일치하는 XName이 있는 요소만 컬렉션에 포함됩니다.Only elements that have a matching XName are included in the collection.

InDocumentOrder<T>(IEnumerable<T>)

모든 노드가 문서 순으로 정렬 된 소스 컬렉션에 포함 된 노드의 컬렉션을 반환 합니다.Returns a collection of nodes that contains all nodes in the source collection, sorted in document order.

Nodes<T>(IEnumerable<T>)

소스 컬렉션에 있는 자식 컬렉션의 모든 문서 및 요소의 노드를 반환합니다.Returns a collection of the child nodes of every document and element in the source collection.

Remove<T>(IEnumerable<T>)

부모 노드에서 소스 컬렉션에 있는 모든 노드를 제거합니다.Removes every node in the source collection from its parent node.

적용 대상

추가 정보