StoryFragment Classe

Definizione

Rappresenta tutto o parte di una storia all'interno di un documento 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)
Ereditarietà
StoryFragment
Attributi
Implementazioni

Esempi

Nell'esempio seguente viene illustrata la <StoryFragment> parte di un XML Paper Specification (XPS)XML Paper Specification (XPS) documento.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>

Commenti

Una storia XPS in XPSXPS un documento è approssimativamente analoga a una storia di un giornale o di una rivista.An XPS story in an XPSXPS document is roughly analogous to a story in a newspaper or magazine. Si tratta di un passaggio di testo e contenuto grafico, in genere in un singolo argomento, all' XPSXPS interno di un singolo documento.It is a passage of text and graphic content, usually on a single topic, within a single XPSXPS document. In genere, si estende su più pagine, ma può essere più breve rispetto a una pagina come una storia boxed in una rivista.Typically, it spans multiple pages, but it can be shorter than a page like a sidebar - boxed story - in a magazine. Una storia può anche essere discontinua come una storia di giornale della pagina anteriore continuata nella pagina 4.A story can also be discontinuous like a front page newspaper story that is continued on page 4. Di conseguenza, una pagina specifica può avere più di una storia e parti di più di una storia.Consequently, a given page can have more than one story and parts of more than one story. Un'intestazione o un piè di pagina è anche un tipo speciale di storia interamente contenuto in una singola pagina.A header or footer is also a special kind of story that is entirely contained on a single page.

Un StoryFragment oggetto rappresenta tutto o una parte di una storia.A StoryFragment represents all or a portion of a story. Non può mai estendersi a più di una pagina, ma può occupare l'intera pagina o condividere una pagina con altri frammenti.It can never span more than one page, but it can occupy the whole of a page or share a page with other fragments. Se una storia si trova in più di una pagina, ogni parte di esso in ogni pagina è un frammento separato.If a story is on more than one page, each part of it on each page is a separate fragment. Sebbene le storie possano avere set di frammenti discontinui, nessun frammento può essere discontinuo.Although stories can have discontinuous sets of fragments, no fragment can itself be discontinuous.

Solo un StoryFragments elemento può essere un elemento padre di StoryFragmentun oggetto.Only a StoryFragments element can be a parent of a StoryFragment. La posizione degli StoryBreak elementi all'interno di StoryFragment un oggetto indica se la storia è contenuta in più frammenti e se i frammenti aggiuntivi precedono o seguono il frammento corrente.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.

Quando un StoryFragment oggetto termina nel mezzo di un elemento strutturale, ad <TableRowGroupStructure>esempio, XPSXPS le applicazioni che producono documenti devono inserire un tag di fine appropriato per l'elemento, in questo </TableRowGroupStructure>caso, prima </StoryFragment> del tag, anche Sebbene la struttura venga continuata in un frammento successivo.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. Questa operazione è necessaria per garantire che l'albero degli elementi all' StoryFragment interno di sia un XML valido. Il frammento che continua la storia deve iniziare con un tag di apertura per la struttura interrotta.(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. L'intero albero di strutture interrotte deve essere gestito allo stesso modo (con un'eccezione descritta di seguito): È necessario aggiungere i tag di fine per ogni tag di inizio non corrispondente sopra il punto di interruzione.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.

L'eccezione si applica quando l'interruzione della storia viene immediatamente eseguita </TableCellStructure> dopo un tag, quindi l'applicazione che produce deve inserire una struttura di<TableCellStructure></TableCellStructure>celle della tabella vuota () nel punto corrispondente del frammento che continua la storia.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. Questa operazione è necessaria in modo che le applicazioni che richiedono l'Unione di tutti i frammenti di una determinata storia possano utilizzare un algoritmo semplice per eseguire questa operazione.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.

Si supponga, ad esempio, che un'applicazione voglia aggiungere il materiale seguente a un XPSXPS documento: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>  

Se un'interruzioni di pagina impone un'estremità al frammento subito </TableCellStructure> dopo per "DelContenuto", l'applicazione deve creare la suddivisione come illustrato nell'esempio seguente: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>  

Un'applicazione che legge il documento potrebbe dover unire il contenuto.An application that reads the document might need to merge this content. Si consideri, ad esempio, un visualizzatore XPS con una copia storia intera nel pulsante degli Appunti; o XPS per l'applicazione cieca che ha passato storie a un sintetizzatore vocale.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. Per alcune applicazioni che leggono il documento potrebbe essere necessario unire un subset dei frammenti di una storia.Some applications that read the document may need to merge a subset of the fragments of a story. Ad esempio, una funzionalità che copia un paragrafo intero negli Appunti facendo doppio clic su di essa dovrebbe eseguire un'operazione di merge ogni volta che il paragrafo si è rivelato diviso tra due 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.

Per eseguire il merge utilizzare questo algoritmo:To merge use this algorithm:

  1. Eliminare la </StoryFragment> dalla fine del primo frammento da unire ed eliminare l'oggetto <StoryFragment> dall'inizio della seconda.Delete the </StoryFragment> from the end of the first fragment to be merged and delete the <StoryFragment> from the beginning of the second.

  2. Se l'ultimo tag di chiusura del primo frammento è dello stesso tipo del primo tag di apertura del secondo frammento (e non <NamedElement> sono tag), eliminarli entrambi.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. Ripetere il passaggio 2 fino a quando i due frammenti si trovano in uno degli Stati seguenti:Repeat step 2 until the two fragments are in either of these states:

    • Non esiste più un tipo corrispondente tra l'ultimo tag di fine del frammento iniziale e il primo tag iniziale del frammento finale.There is no longer a type match between the last end tag of the leading fragment the first start tag of the trailing fragment.

    • Ultimo tag di fine del frammento iniziale il primo tag iniziale del frammento finale è entrambi <NamedElement> tag.The last end tag of the leading fragment the first start tag of the trailing fragment are both <NamedElement> tags.

Nell'esempio precedente, se la cella vuota non è stata aggiunta dall'applicazione Producer, una fusione dei frammenti produrrebbe una tabella la cui prima riga aveva una sola cella contenente i riferimenti "DelContenuto" e "MoreContent" anziché il primo originale riga con due celle, ognuna contenente un solo riferimentoIn 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

Quando l'intera storia viene unita, l'algoritmo deve essere ripetuto per ogni frammento successivo che fa parte della stessa storia.When the entire story is being merged, the algorithm should be repeated for each subsequent fragment that is part of the same story. I frammenti che appartengono a una storia vengono indicizzati nell' <Story> elemento.The fragments that belong to a story are indexed in the <Story> element. Vedere la XML Paper Specification (XPS)XML Paper Specification (XPS) sezione 9.1.15 della specifica che è possibile ottenere in XPS: Downloaddi specifiche e licenze.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. L'ultimo frammento per una determinata storia avrà un StoryBreak elemento come ultimo figlio.The last fragment for a given story will have a StoryBreak element as its last child.

Costruttori

StoryFragment()

Inizializza una nuova istanza della classe StoryFragment.Initializes a new instance of the StoryFragment class.

Proprietà

FragmentName

Ottiene o imposta il nome del frammento del brano.Gets or sets the name of the story fragment.

FragmentType

Ottiene o imposta il tipo di frammento.Gets or sets the type of fragment.

StoryName

Ottiene o imposta il nome del brano.Gets or sets the name of the story.

Metodi

Add(BlockElement)

Aggiunge un blocco al frammento di blocco di contenuto.Add a block to the story fragment.

Equals(Object)

Determina se l'oggetto specificato è uguale all'oggetto corrente.Determines whether the specified object is equal to the current object.

(Ereditato da Object)
GetHashCode()

Funge da funzione hash predefinita.Serves as the default hash function.

(Ereditato da Object)
GetType()

Ottiene l'oggetto Type dell'istanza corrente.Gets the Type of the current instance.

(Ereditato da Object)
MemberwiseClone()

Crea una copia superficiale dell'oggetto Object corrente.Creates a shallow copy of the current Object.

(Ereditato da Object)
ToString()

Restituisce una stringa che rappresenta l'oggetto corrente.Returns a string that represents the current object.

(Ereditato da Object)

Implementazioni dell'interfaccia esplicita

IAddChild.AddChild(Object)

Questo membro supporta l'infrastruttura .NET Framework e non è possibile usarlo direttamente dal codice.This member supports the .NET Framework infrastructure and is not intended to be used directly from your code.

IAddChild.AddText(String)

Aggiunge il contenuto di testo di un nodo all'oggetto.Adds the text content of a node to the object.

IEnumerable.GetEnumerator()

Questo metodo non è stato implementato.This method has not been implemented.

IEnumerable<BlockElement>.GetEnumerator()

Questo metodo non è stato implementato.This method has not been implemented.

Metodi di estensione

CopyToDataTable<T>(IEnumerable<T>)

Restituisce un oggetto DataTable che contiene copie degli oggetti DataRow, dato un oggetto IEnumerable<T> di input dove il parametro generico DataRow è T.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)

Copia gli oggetti DataRow nell'oggetto DataTable specificato, dato un oggetto IEnumerable<T> di input dove il parametro generico 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)

Copia gli oggetti DataRow nell'oggetto DataTable specificato, dato un oggetto IEnumerable<T> di input dove il parametro generico 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)

Esegue il cast degli elementi di un oggetto IEnumerable nel tipo specificato.Casts the elements of an IEnumerable to the specified type.

OfType<TResult>(IEnumerable)

Filtra gli elementi di un oggetto IEnumerable in base a un tipo specificato.Filters the elements of an IEnumerable based on a specified type.

AsParallel(IEnumerable)

Consente la parallelizzazione di una query.Enables parallelization of a query.

AsQueryable(IEnumerable)

Converte un oggetto IEnumerable in un oggetto IQueryable.Converts an IEnumerable to an IQueryable.

Ancestors<T>(IEnumerable<T>)

Restituisce una raccolta di elementi che contiene i predecessori di ciascun nodo nella raccolta di origine.Returns a collection of elements that contains the ancestors of every node in the source collection.

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

Restituisce una raccolta di elementi filtrati che contiene i predecessori di ciascun nodo nella raccolta di origine.Returns a filtered collection of elements that contains the ancestors of every node in the source collection. Solo gli elementi che hanno un oggetto XName corrispondente vengono inclusi nella raccolta.Only elements that have a matching XName are included in the collection.

DescendantNodes<T>(IEnumerable<T>)

Restituisce una raccolta di nodi discendenti di ciascun documento ed elemento nella raccolta di origine.Returns a collection of the descendant nodes of every document and element in the source collection.

Descendants<T>(IEnumerable<T>)

Restituisce una raccolta di elementi che contiene gli elementi discendenti di ciascun elemento e documento nella raccolta di origine.Returns a collection of elements that contains the descendant elements of every element and document in the source collection.

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

Restituisce una raccolta filtrata di elementi che contiene gli elementi discendenti di ciascun elemento e documento nella raccolta di origine.Returns a filtered collection of elements that contains the descendant elements of every element and document in the source collection. Solo gli elementi che hanno un oggetto XName corrispondente vengono inclusi nella raccolta.Only elements that have a matching XName are included in the collection.

Elements<T>(IEnumerable<T>)

Restituisce una raccolta di elementi figlio di ciascun elemento e documento nella raccolta di origine.Returns a collection of the child elements of every element and document in the source collection.

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

Restituisce una raccolta filtrata degli elementi figlio di ciascun elemento e documento nella raccolta di origine.Returns a filtered collection of the child elements of every element and document in the source collection. Solo gli elementi che hanno un oggetto XName corrispondente vengono inclusi nella raccolta.Only elements that have a matching XName are included in the collection.

InDocumentOrder<T>(IEnumerable<T>)

Restituisce una raccolta di nodi che contiene tutti i nodi nella raccolta di origine ordinati in base all'ordine con cui sono riportati nel documento.Returns a collection of nodes that contains all nodes in the source collection, sorted in document order.

Nodes<T>(IEnumerable<T>)

Restituisce una raccolta di nodi figlio di ciascun documento ed elemento nella raccolta di origine.Returns a collection of the child nodes of every document and element in the source collection.

Remove<T>(IEnumerable<T>)

Rimuove ciascun nodo nella raccolta di origine dal nodo padre.Removes every node in the source collection from its parent node.

Si applica a

Vedi anche