Frage

Ich bin die Elemente der Form in einer einfachen XML-Struktur definieren, etwa so:

<subtab id="page_background" label="Page Background" prefix="page">
   <input label="Background color" field="bgcolor" type="color"/>
   <input label="Background image" field="bgimage" type="image"/>
   <space />
 </subtab>
   etc.

Ich habe große Blöcke absolut identische Informationen enthalten, z.B. die Formularfelder den Hintergrund der Seite für die Definition, den Inhaltsbereich, in der oberen Leiste, und so weiter. Das macht die XML-Datei sehr umständlich, mit zu arbeiten und schauen.

Gibt es eine native XML „Copy + Paste“ konstruieren / Befehl / Anweisung, die den XML-Parser erzählt - in meinem Fall, SimpleXML - den Inhalt eines bestimmten Zweiges von einem anderen zu sehen?

In Pseudo-Code:

<subtab id="content_background" copyFrom="../page_background">
<!-- sub-elements from "page_background" are magically copied here 
     by the parser -->
</subtab>
War es hilfreich?

Lösung

XML ist nur ein Format, so dass kein Kopierbefehl. XSLT kann das tun, aber es ist wahrscheinlich zu kompliziert für Ihre Bedürfnisse.

Mein Rat: Erstellen Sie eine PHP-Funktion, die Ihre Textelemente hinzufügt. Zum Beispiel:

function default_elements(SimpleXMLElement $node)
{
    $default = array(
        'input' => array(
            array('label'=>"Background color", 'field'=>"bgcolor", 'type'=>"color"),
            array('label'=>"Background image", 'field'=>"bgimage", 'type'=>"image")
        ),
        'space' => array(
            array()
        )
    );

    foreach ($default as $name => $elements)
    {
        foreach ($elements as $attrs)
        {
            $new = $node->addChild($name);
            foreach ($attrs as $k => $v)
            {
                $new[$k] = $v;
            }
        }
    }
}

Andere Tipps

Sie möchten ein SimpleXMLElement mit dem Format erstellen und Klon verwenden, die Aktualisierung jeder geänderten Attribute oder Sub-Tags jedes Mal.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top