Brunft: Zwei-Phasen-Transformation 2. Versuch

Beitrag lesen

Hallo,

danke für die vielen Antworten, aber ich meine, ich hab das Problem wohl wirklich nicht klar erklärt. Ich versuch mal, meine wahre Aufgabenstellung kurz zu erklären ...

Ich möchte per XML Schnittstellen beschreiben und zwar sehr viele Schnittstellen. Jede Schnittstelle hat einen input und einen output, input und output wiederum besitzen felder. Mit XSL möchte ich diese Schnittstellen dann in HTML files wandeln, damit diejenigen, welche die Schnittstelle nutzen, die Schnittstellenbeschreibung in einem schön aufgemotzten HTML file mit jedem Browser abfragen können. (Irgendwann möchte ich die Transformation dann am Webserver machen)

Also z.B.:

<interface name="phytagoras">
  <input>
    <field name="a" format="numeric" mandatory="true">
      <description>Kathete</description>
    </field>
    <field name="b" format="numeric" mandatory="true">
      <description>Kathete</description>
    </field>
  </input>
  <output>
    <field name="returncode" />
    <field name="c" format="numeric">
      <description>Hypotenuse</description>
    </field>
  </output>
</interface>

Nun kommt dieses Feld "returncode" praktisch in jeder Schnittstelle vor und hat immer die gleichen Daten. Nun will ich diese Daten aber nicht bei jeder Schnittstelle angeben müssen. Denn sollte sich bei diesem Feld was ändern, müssten ich ja wieder alle Schnittstellen-XML-files angreifen.

Mein erster Gedanke war, für dieses Feld einfach ein template zu erstellen, genau so, wie ihr mir es empfohlen habt:

<xsl:template match="field[@name='returncode']">
  <!-- HTML code für Feld "returncode" -->
  ...
</xsl:template>

Was mir dabei aber nicht gefällt ist, dass die HTML-Formatierung eines Feldes an mehreren Stellen im XSL file existiert (geht mal davon aus, dass es mehr solche "allgemeinen" Felder gibt)
Daher würd ich gerne diese "allgemeinen Felder" vor der HTML-Transformation in die entspr. XML-Definition wandeln, also
<field name="returncode" />
soll zu
<field name="returncode" format="String(8)">
  <description>Ein 8stelliger Returncode</description>
</field>
werden.

hmmm ... bin ich eigentlich schon an die "zu spezifisch"-Grenze gestoßen? :)

Also meine Frage, muss ich das selber programmieren (weil im Prinzip kommt das ja nur einem Suchen&Ersetzen-Algorithmus gleich), oder weiss jemand eine Möglichkeit, dass mit XSL zu realisieren?

vielen Dank!
brunft