Skip to content

Texte simplifié en cours de route (isSimplified)

Conventions des exemples de cette page

Pour ne pas répéter la même amorce partout, les exemples qui suivent supposent ce décor. Chaque bloc ne montre donc que ce qu'il démontre.

ts
import { loadReqIfPackage, ReqIfIndex } from "reqif-preview";

// Les octets de votre fichier .reqif ou .reqifz.
// Voir [Démarrage](/fr/guide/demarrage) pour les obtenir depuis un <input type="file">,
// depuis Node ou depuis une URL.
declare const bytes: Uint8Array;

const pkg = await loadReqIfPackage(bytes);
const doc = pkg.document; // le premier document du paquet

// pkg.documents, pas pkg.document : c'est ce qui résout les relations qui
// traversent la frontière entre deux .reqif d'un même .reqifz.
const index = new ReqIfIndex(pkg.documents);

const spec = doc.coreContent.specifications[0];
const obj = index.specObjects.get(spec.children[0].objectRef)!;

Quand un outil de la chaîne d'échange ne sait pas interpréter la mise en forme d'un attribut XHTML, la spec (clause 10.8.20) lui demande de :

  1. remplacer le contenu par une version simplifiée ;
  2. poser IS-SIMPLIFIED="true" sur la valeur ;
  3. conserver l'original dans <THE-ORIGINAL-VALUE>.

Autrement dit, le fichier transporte les deux versions : celle que l'outil intermédiaire savait afficher, et celle qu'il a reçue.

Pourquoi l'original par défaut

reqif-preview rend le sous-ensemble XHTML complet autorisé par la spec — il n'a donc pas la déficience que ce drapeau signale. Par défaut il affiche l'original, plus fidèle que la version dégradée :

ts
// Comportement par défaut : l'original s'il existe, sinon le contenu simplifié.
const html = await renderPackageToHtml(pkg);

// Pour reproduire ce que verrait un outil limité :
const html = await renderPackageToHtml(pkg, { preferSimplifiedXhtml: true });

Les deux contenus sont exposés dans le modèle :

ts
const { value } = resolveAttribute(obj, index, "ReqIF.Text");

if (value?.kind === "XHTML") {
  value.value;         // XhtmlContent — ce que la spec appelle theValue
  value.originalValue; // XhtmlContent — theOriginalValue, si présent
  value.isSimplified;  // true quand value.value est un substitut dégradé
}

Les pièces jointes référencées par l'un comme par l'autre sont résolues : basculer preferSimplifiedXhtml ne fait jamais disparaître une image.

Extraction de texte : toujours l'original

xhtmlToPlainText et valueToPlainText lisent toujours l'original quand il existe, indépendamment de preferSimplifiedXhtml. La raison est concrète : une simplification peut avoir perdu du texte — un tableau aplati, une liste écrasée — et une recherche plein texte ou un export CSV veut la source la plus complète, pas la plus jolie.

Voir la différence

Le bac à sable charge un exemple dont une exigence porte les deux versions. Cochez preferSimplifiedXhtml et regardez-la changer.

Rappel de modélisation

isSimplified s'applique à une valeur d'attribut, pas à un objet ni à un document. Un même SpecObject peut parfaitement avoir un ReqIF.Text simplifié et une description intacte : le drapeau se lit toujours sur l'AttributeValueXHTML concernée.

Publié sous licence MIT. Conforme à OMG ReqIF v1.2 (formal/2016-07-01).