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> XML Paper Specification (XPS)XML Paper Specification (XPS)ドキュメントの一部を示しています。The following example shows the <StoryFragment> part of an XML Paper Specification (XPS)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. これは、1つXPSXPSのドキュメント内のテキストとグラフィックコンテンツ (通常は1つのトピック) です。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. したがって、1つのページに複数のストーリーと複数のストーリーの部分を含めることができます。Consequently, a given page can have more than one story and parts of more than one story. ヘッダーまたはフッターは、1つのページに完全に含まれる特殊なストーリーでもあります。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要素だけです。 StoryFragmentOnly a StoryFragments element can be a parent of a StoryFragment. 内のStoryBreak要素の位置は、ストーリーが複数のフラグメントに含まれているかどうか、および追加のフラグメントが現在のフラグメントの前または後にあるかどうかを示します。StoryFragmentThe 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構造的な要素の途中で終了しXPSXPSた場合 ( <TableRowGroupStructure>たとえば、)、ドキュメント生成アプリケーションでは、タグの</StoryFragment>前に要素 (この場合</TableRowGroupStructure>は) の適切な終了タグを挿入する必要があります。構造体は、後のフラグメントで続行されています。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. 中断された構造体のツリー全体は、同じ方法で処理する必要があります (以下で説明する1つの例外があります)。終了タグは、中断した時点よりも前の一致しない開始タグごとに追加する必要があります。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 ビューアーの場合を考えてみましょう。または、音声シンセサイザーにストーリーを渡したブラインドアプリケーション用の XPSConsider, 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. たとえば、3つの段落を3回クリックしてクリップボードにコピーする機能では、そのような段落が2つStoryFragmentのに分割されるため、段落が改ページになるたびにマージを行う必要があります。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> からを削除し、2番目のフラグメントの先頭からを削除します。</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. 最初のフラグメントの最後の終了タグが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つのフラグメントが次のいずれかの状態になるまで、手順 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 の両方の参照を含むセルが1つしかないテーブルが作成されます。2つのセルを持つ行。それぞれに1つの参照が含まれます。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 でXML Paper Specification (XPS)XML Paper Specification (XPS) 入手できる仕様の9.1.15 セクションを参照してください。仕様とライセンスのダウンロード。See section 9.1.15 of the XML Paper Specification (XPS)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>)

指定した入力 DataTable オブジェクトに応じて (ジェネリック パラメーター TDataRow)、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)

指定した入力 DataRow オブジェクトに応じて (ジェネリック パラメーター TDataTable)、指定した 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)

指定した入力 DataRow オブジェクトに応じて (ジェネリック パラメーター TDataTable)、指定した 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.

適用対象

こちらもご覧ください