Kontakt
Impressum

InDesign XML Regeln

HomeScript KatalogForumSkriptePlugInsKatalogImNuJavaScriptJS EinführungJS ESTKJS EigenschaftenJS MethodenJS Methoden und EigenschaftenJS XMLJS InDesign XML RegelnJS DialogeJS If..ElseJS While LoopJS Try...CatchJS Script UIJS Achtung!
 
DokumenteBücherLinksSchulungenVideosInDesign Tipps

InDesign XML Regeln

Mit der Version InDesign "CS3" hat Adobe die Funktion "Xml-Regeln" ausgeliefert. Dieses Feature hat kein Interface und kann nur über Scripting gesteuert werden. Mit den InDesign XML-Regeln lassen sich importierte XML Dateien sehr leicht weiterverarbeiten, wie z.B. eine Formatierung hinzufügen oder ein zusätzliches Leerzeichen einsetzen. Ziel dieser Einheit ist es, einen Katalog-Eintrag für ein T-Shirt zu generieren (wie in der Abbildung unten zu sehen).

 


Ein fertiger Katalogeintrag aus XML Daten und mit InDesign XML Regeln erstellt

Ein fertiger Katalogeintrag aus XML Daten und mit InDesign XML Regeln erstellt

 

Text zum XML

 

Das Original XML für die InDesign XML Regeln
<?xml version="1.0" encoding="UTF-8"?>
<Data>
        <Item id="16">
            <Name>Women’s White Tee</Name>
            <Number>#0003471</Number>
            <Description>This tee is a nice twist on a classic. Regular fit. Made in the USA.</Description>
            <Detail>Machine Wash</Detail>
            <Detail>25” from shoulder to hem</Detail>
            <Detail>100% Cotton</Detail>
            <Price>$18.00</Price>
            <Size>S, M, L, XL</Size>
            <Image>female_tshirt_8.jpg</Image>
        </Item>
</Data>

 

Das gewünschte InDesign Layout besitzt einen Platzhalter-Rahmen für das Bild und einen

Textrahmen für die Produkt-Beschreibung. Das Original-XML bildet diese Struktur so nicht

ab. Aber Du kannst die Struktur mit einer XSL-Transformation angleichen, so dass nach

dem Import des XML alle Elemente in die vorgesehenen Rahmen einfliessen.


Die InDesign Vorlage mit den XML-Tags <textcontainer> und <Image>


Hier kannst Du dir das komplette XML des Katalogeintrages downloaden:

product16.xml

Das XSL für den InDesign XML-Import
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0">
  <xsl:output method = "xml" version="1.0" encoding="UTF-8" indent="yes"/>
  <xsl:template match="Data">
    <xsl:element name="Data">
    
    	<xsl:element name="textcontainer">
    		 <xsl:copy-of select="Item/Name"/>
    		 <xsl:copy-of select="Item/Number"/>
    		 <xsl:copy-of select="Item/Description"/>
    		 <xsl:copy-of select="Item/Detail"/>
    		 <xsl:copy-of select="Item/Price"/>
    		 <xsl:copy-of select="Item/Size"/>
    	</xsl:element>
 
		<xsl:copy-of select="Item/Image"/>
		
    </xsl:element> <!-- End Data-->
  </xsl:template>
</xsl:stylesheet>

 

Die XSL-Transformation generiert das folgende XML für den InDesign Import aus dem

Original XML. Die Produkt-ID <Item id="16"> wird nicht benötigt und ist deshalb

im XSL nicht berücksichtigt. Ausserdem werden Text und Bild in die Xml-Elemente

<textcontainer> und <image> gesplittet.

 

Das XSL-transformierte XML für den InDesign XML-Import
<?xml version="1.0" encoding="UTF-8"?>
<Data>
   <textcontainer>
      <Name>Women's White Tee</Name>
      <Number>#0003471</Number>
      <Description>This tee is a nice twist on a classic. Regular fit. Made in the USA.</Description>
      <Detail>Machine Wash</Detail>
      <Detail>25" from shoulder to hem</Detail>
      <Detail>100% Cotton</Detail>
      <Price>$18.00</Price>
      <Size>S, M, L, XL</Size>
   </textcontainer>
   <Image>female_tshirt_8.jpg</Image>
</Data>

 

Die in der InDesign Vorlage vorhandenen Absatzformate "item_name" und "item_number"

werden jetzt beispielhaft über eine XML-Regel per Skript zugewiesen.

Das Format "item_name" wird dem Element //textcontainer/Name zugewiesen während

das Element //textcontainer/Number das Format "item_number" erhält.

Absatz- und Zeichenformate lassen auch über die XML-Attribute "aid:pstyle" oder

"aid:cstyle" schon über das importierte XML zuweisen. Die InDesign Funktion

"XML-Tag zu Formaten zuweisen" kann hier auch zum Einsatz kommen. Um die

Arbeitsweise der InDesign XML-Regeln zu verdeutlichen, werden hier die XML-Regeln

für das Zuweisen der Formate verwendet.

 

Ausschnitt InDesign XML Regel für die Formate
var myGlueCodePath = app.filePath + "/Scripts/xml rules/glue code.jsx";
var myFile = File(myGlueCodePath);
app.doScript(myFile);
 
main();
function main(){
		var myDocument = app.documents.item(0); 
		var myRuleSet = new Array (
		new processName,
new processNumber
		);
		with(myDocument){
			var elements = xmlElements;
			__processRuleSet(elements.item(0), myRuleSet);
		}}
 
 
 
	function processName(){
			this.name = "processName";
			this.xpath = "//textcontainer/Name";	
			this.apply = function(myElement, myRuleProcessor){
				
				myElement.applyParagraphStyle("item_name");
 
			return false;
		}		
	}
 
	function processNumber(){
			this.name = "processNumber";
			this.xpath = "//textcontainer/Number";	
			this.apply = function(myElement, myRuleProcessor){
				
				myElement.applyParagraphStyle("item_number");
 
			return false;
		}		
	}
 
 
 
 

 

 

KatalogImNu und XML Regeln

 

Das Tool "KatalogImNu" verbindet InDesign Template, XSL-Datei, XML-Regeln und

XML-Dateien. In einer einzigen Datei lässt sich definieren, welches InDesign Template

und welche XML-Regeln für die Batch-Verarbeitung der XML Dokumente verwendet

werden sollen.

Mit etwas Skripting-Erfahrung lassen sich so sehr leicht aus den XML-Dateien verschiedene

Layout-Varianten (z.B. Hochformat und Querformat für das iPad) generieren.

 

KatalogImNu und Xml-Regeln
KatalogImNu.INDESIGN_TEMPLATE_NAME = "Demo.indt";
KatalogImNu.XSL_FILENAME = "demo.xsl";
 
KatalogImNu.TEXT = "TEXT";
KatalogImNu.BILD = "BILD";
 
KatalogImNu.prototype.run = function (curDocument, curOptions) {
	
		this.processContent(curDocument);
		this.placeContent(curDocument);
		
		this.preProcessImages(curDocument, curOptions);
		this.placeImages(curDocument);
		
}
 
/* ... XML-Regeln definieren ... */

 

Vorlagen für KatalogImNu benötigen keine XML-Tags, sondern ein Skript-Etikett

(früher: Skriptbezeichnung). Über dieses Label werden die XML-Elemente dann zugeordnet.

 

Die Rahmen für den XML-Import sind mit den Labeln "BILD" und "TEXT" versehen.

Die Rahmen für den XML-Import sind mit den Labeln "BILD" und "TEXT" versehen.


 

Weitere Informationen und eine Demoversion findest Du hier.

 

© InDesignScript.de, Stefan Rakete

Zurück Weiter