StoryFragment Classe

Définition

Représente tout ou partie d’un article dans un document 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)
Héritage
StoryFragment
Attributs
Implémente

Exemples

L’exemple suivant illustre la <StoryFragment> partie d’un XPS (XML Paper Specification)XML Paper Specification (XPS) document.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>

Remarques

Une histoire XPS dans un XPSXPS document est à peu près similaire à une histoire dans un journal ou un magazine.An XPS story in an XPSXPS document is roughly analogous to a story in a newspaper or magazine. Il s’agit d’un passage de texte et de contenu graphique, généralement sur un sujet unique, XPSXPS au sein d’un seul document.It is a passage of text and graphic content, usually on a single topic, within a single XPSXPS document. En général, elle s’étend sur plusieurs pages, mais elle peut être plus petite qu’une page comme une barre latérale dans un magazine.Typically, it spans multiple pages, but it can be shorter than a page like a sidebar - boxed story - in a magazine. Un récit peut également être discontinu comme un article de journal de la page de front qui se poursuit à la page 4.A story can also be discontinuous like a front page newspaper story that is continued on page 4. Par conséquent, une page donnée peut avoir plusieurs récits et parties de plusieurs récits.Consequently, a given page can have more than one story and parts of more than one story. Un en-tête ou un pied de page est également un genre particulier d’histoire qui est entièrement contenu sur une seule page.A header or footer is also a special kind of story that is entirely contained on a single page.

Un StoryFragment représente tout ou partie d’un récit.A StoryFragment represents all or a portion of a story. Il ne peut pas s’étendre sur plus d’une page, mais il peut occuper l’intégralité d’une page ou partager une page avec d’autres fragments.It can never span more than one page, but it can occupy the whole of a page or share a page with other fragments. Si un récit se trouve sur plusieurs pages, chaque partie de chaque page est un fragment distinct.If a story is on more than one page, each part of it on each page is a separate fragment. Bien que les récits puissent avoir des jeux de fragments discontinus, aucun fragment ne peut lui-même être discontinu.Although stories can have discontinuous sets of fragments, no fragment can itself be discontinuous.

Seul un StoryFragments élément peut être un parent d’un StoryFragment.Only a StoryFragments element can be a parent of a StoryFragment. L’emplacement des StoryBreak éléments dans un StoryFragment indique si l’histoire est contenue dans plusieurs fragments, et si les fragments supplémentaires précèdent ou suivent le fragment en cours.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.

Lorsqu’un StoryFragment se termine au milieu d’un élément structurel; disons <TableRowGroupStructure>a, XPSXPS les applications de production de documents doivent insérer une balise de fin appropriée pour l’élément </TableRowGroupStructure>(dans ce </StoryFragment> cas) avant la balise, même Bien que la structure soit poursuivie dans un fragment ultérieur.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. (Cela est nécessaire pour garantir que l’arborescence des éléments dans StoryFragment est un XML valide.) Le fragment qui continue l’histoire doit commencer par une balise d’ouverture pour la structure interrompue.(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. La totalité de l’arborescence des structures interrompues doit être traitée de la même façon (à une exception près, décrite ci-dessous): Des balises de fin doivent être ajoutées pour chaque balise de début non appariée au-dessus du point d’interruption.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’exception s’applique lorsque l’interruption de récit vient immédiatement après </TableCellStructure> une balise, alors l’application productrice doit insérer une structure de cellule<TableCellStructure></TableCellStructure>de table vide () au point correspondant dans le fragment qui continue l’histoire.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. Cela est nécessaire pour que l’utilisation d’applications qui doivent fusionner tous les fragments d’un récit donné puisse utiliser un algorithme simple pour effectuer cette opération.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.

Supposons, par exemple, qu’une application souhaitait ajouter la documentation suivante à XPSXPS un document: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>  

Si un saut de page force une fin au fragment juste après le </TableCellStructure> pour «SomeContent», l’application doit créer le fractionnement comme indiqué dans l’exemple suivant: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>  

Une application qui lit le document peut avoir besoin de fusionner ce contenu.An application that reads the document might need to merge this content. Prenons l’exemple d’une visionneuse XPS avec le bouton copier tout le contenu vers le presse-papiers . ou XPS pour l’application aveugle qui a passé des récits à un synthétiseur vocal.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. Certaines applications qui lisent le document peuvent avoir besoin de fusionner un sous-ensemble des fragments d’un récit.Some applications that read the document may need to merge a subset of the fragments of a story. Par exemple, une fonctionnalité qui copie un paragraphe entier dans le presse-papiers en double-cliquant dessus doit effectuer une fusion chaque fois que le paragraphe s’étend sur un saut de page, car ce paragraphe est divisé entre StoryFragmentdeux s.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.

Pour fusionner, utilisez cet algorithme:To merge use this algorithm:

  1. Supprimez </StoryFragment> le de la fin du premier fragment à fusionner et <StoryFragment> supprimez à partir du début de la seconde.Delete the </StoryFragment> from the end of the first fragment to be merged and delete the <StoryFragment> from the beginning of the second.

  2. Si la dernière balise de fermeture du premier fragment est du même type que la première balise d’ouverture du deuxième fragment (et qu’il <NamedElement> ne s’agit pas de balises), supprimez-les toutes les deux.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. Répétez l’étape 2 jusqu’à ce que les deux fragments soient dans l’un des États suivants:Repeat step 2 until the two fragments are in either of these states:

    • Il n’y a plus de correspondance de type entre la dernière balise de fin du fragment principal et la première balise de début du fragment de fin.There is no longer a type match between the last end tag of the leading fragment the first start tag of the trailing fragment.

    • La dernière balise de fin du fragment principal la première balise de début du fragment de fin <NamedElement> est les deux balises.The last end tag of the leading fragment the first start tag of the trailing fragment are both <NamedElement> tags.

Dans l’exemple ci-dessus, si la cellule vide n’a pas été ajoutée par l’application productrice, une fusion des fragments produirait une table dont la première ligne comportait une seule cellule contenant à la fois les références «SomeContent» et «MoreContent» au lieu de la première. ligne avec deux cellules, chacune contenant une référence uniqueIn 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

Lorsque l’ensemble du récit est fusionné, l’algorithme doit être répété pour chaque fragment suivant qui fait partie du même article.When the entire story is being merged, the algorithm should be repeated for each subsequent fragment that is part of the same story. Les fragments qui appartiennent à un récit sont indexés dans l' <Story> élément.The fragments that belong to a story are indexed in the <Story> element. Consultez la section 9.1.15 de XPS (XML Paper Specification)XML Paper Specification (XPS) la spécification que vous pouvez obtenir à l’adresse XPS: La spécification et lestéléchargements de licence.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. Le dernier fragment d’un récit donné aura un StoryBreak élément comme dernier enfant.The last fragment for a given story will have a StoryBreak element as its last child.

Constructeurs

StoryFragment()

Initialise une nouvelle instance de la classe StoryFragment.Initializes a new instance of the StoryFragment class.

Propriétés

FragmentName

Obtient ou définit le nom du fragment d'article.Gets or sets the name of the story fragment.

FragmentType

Obtient ou définit le type de fragment.Gets or sets the type of fragment.

StoryName

Obtient ou définit le nom de l'article.Gets or sets the name of the story.

Méthodes

Add(BlockElement)

Ajoute un bloc au fragment d'histoire.Add a block to the story fragment.

Equals(Object)

Détermine si l'objet spécifié est identique à l'objet actuel.Determines whether the specified object is equal to the current object.

(Hérité de Object)
GetHashCode()

Fait office de fonction de hachage par défaut.Serves as the default hash function.

(Hérité de Object)
GetType()

Obtient le Type de l'instance actuelle.Gets the Type of the current instance.

(Hérité de Object)
MemberwiseClone()

Crée une copie superficielle de l'objet Object actuel.Creates a shallow copy of the current Object.

(Hérité de Object)
ToString()

Retourne une chaîne qui représente l'objet actuel.Returns a string that represents the current object.

(Hérité de Object)

Implémentations d’interfaces explicites

IAddChild.AddChild(Object)

Ce membre prend en charge l'infrastructure .NET Framework et n'est pas destiné à être utilisé directement à partir de votre code.This member supports the .NET Framework infrastructure and is not intended to be used directly from your code.

IAddChild.AddText(String)

Ajoute le contenu textuel d’un nœud à l’objet.Adds the text content of a node to the object.

IEnumerable.GetEnumerator()

Cette méthode n’a pas encore été implémentée.This method has not been implemented.

IEnumerable<BlockElement>.GetEnumerator()

Cette méthode n’a pas encore été implémentée.This method has not been implemented.

Méthodes d’extension

CopyToDataTable<T>(IEnumerable<T>)

Retourne un DataTable qui contient des copies des objets DataRow, à partir d'un objet d'entrée IEnumerable<T> où le paramètre générique T est 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)

Copie les objets DataRow vers le DataTable spécifié, à partir d'un objet d'entrée IEnumerable<T> où le paramètre générique T est 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)

Copie les objets DataRow vers le DataTable spécifié, à partir d'un objet d'entrée IEnumerable<T> où le paramètre générique T est DataRow.Copies DataRow objects to the specified DataTable, given an input IEnumerable<T> object where the generic parameter T is DataRow.

Cast<TResult>(IEnumerable)

Effectue un cast des éléments d'un IEnumerable vers le type spécifié.Casts the elements of an IEnumerable to the specified type.

OfType<TResult>(IEnumerable)

Filtre les éléments d'un IEnumerable en fonction du type spécifié.Filters the elements of an IEnumerable based on a specified type.

AsParallel(IEnumerable)

Active la parallélisation d'une requête.Enables parallelization of a query.

AsQueryable(IEnumerable)

Convertit un IEnumerable en IQueryable.Converts an IEnumerable to an IQueryable.

Ancestors<T>(IEnumerable<T>)

Retourne une collection d'éléments qui contient les ancêtres de chaque nœud de la collection source.Returns a collection of elements that contains the ancestors of every node in the source collection.

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

Retourne une collection d'éléments filtrée qui contient les ancêtres de chaque nœud de la collection source.Returns a filtered collection of elements that contains the ancestors of every node in the source collection. Seuls les éléments avec un XName correspondant sont inclus dans la collection.Only elements that have a matching XName are included in the collection.

DescendantNodes<T>(IEnumerable<T>)

Retourne une collection des nœuds descendants de chaque document et élément de la collection source.Returns a collection of the descendant nodes of every document and element in the source collection.

Descendants<T>(IEnumerable<T>)

Retourne une collection d'éléments qui contient les éléments descendants de tous les éléments et tous les documents de la collection source.Returns a collection of elements that contains the descendant elements of every element and document in the source collection.

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

Retourne une collection d'éléments filtrée qui contient les éléments descendants de tous les éléments et tous les documents de la collection source.Returns a filtered collection of elements that contains the descendant elements of every element and document in the source collection. Seuls les éléments avec un XName correspondant sont inclus dans la collection.Only elements that have a matching XName are included in the collection.

Elements<T>(IEnumerable<T>)

Retourne une collection des éléments enfants de chaque élément et document de la collection source.Returns a collection of the child elements of every element and document in the source collection.

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

Retourne une collection filtrée des éléments enfants de chaque élément et document de la collection source.Returns a filtered collection of the child elements of every element and document in the source collection. Seuls les éléments avec un XName correspondant sont inclus dans la collection.Only elements that have a matching XName are included in the collection.

InDocumentOrder<T>(IEnumerable<T>)

Retourne une collection de nœuds qui contient tous les nœuds de la collection source, triés selon l'ordre des documents.Returns a collection of nodes that contains all nodes in the source collection, sorted in document order.

Nodes<T>(IEnumerable<T>)

Retourne une collection des nœuds enfants de chaque document et élément de la collection source.Returns a collection of the child nodes of every document and element in the source collection.

Remove<T>(IEnumerable<T>)

Supprime chaque nœud de la collection source de son nœud parent.Removes every node in the source collection from its parent node.

S’applique à

Voir aussi