geplaatst door: RobinS
Beste mensen,

Ik ben bezig met een boek opmaken in InDesign. Dit boek wordt aangeleverd vanuit een XML bestand.
De oorspronkelijke bestanden bewerk ik met behulp van Oxygen zodat de XML zo goed mogelijk inloopt in InDesign en de rest van de opmaak doe ik met behulp van InDesign Paragraph Styles & Character Styles. Dit deel gaat eigenlijk in zijn geheel allemaal goed op 1 probleem na.

De marge tekst.
In de bovenstaande afbeelding kan je goed zien wat het probleem is. De marge tekst die uit een variabel aantal regels bevat schuift de rest van de tekst een aantal regels op.
Nu is dit probleem makkelijk op te lossen met behulp van een tekstkader. Maar omdat het boek uit meer dan 2000 bladzijdes bestaat waarop de marge tekst tenminste 3 keer per pagina voorkomt is het geen goede oplossing om dit overal met de hand te doen en wil ik dit graag automatisch doen.

De XML code in het klein is ongeveer.

</kop></kopNaam>Artikel</kopNaam> </artikelKopNummer>617</artikelKopNummer> </kop>
</margeTekst>margeTekstvoorbeeld, deze tekst varieert tussen de 1 en 8 regels</margeTekst>
</kopNummer>1 </kopNummer></broodTekst_Nivo1>Dit is een voorbeeld regel tekst, Dit is een voorbeeld regel tekst, Dit is een voorbeeld regel tekst.<opsomming>
</kopNummer>a </kopNummer></broodTekst_Nivo2>geld;</broodTekst_Nivo2>
</opsomming></broodTekst_Nivo1>

Ik heb zelf uitgebreid gezocht en ik denk de oplossing hier http://www.adobe.com/products/indesign/pdfs/InDesign_and_XML_Technical_Reference.pdf tegen gekomen te zijn op bladzijde 23 onder de kop "Using anchored objects for repeating elements". Maar ik heb alles netjes geprobeerd in deze handleiding en bij het opnieuw importeren van de XML worden de elementen (labels) nog steeds niet omgezet naar anchers. Als iemand een oplossing weet hoe ik een bepaald element (label) overal in mijn xml kan linken aan een ancher dan is dat de oplossing. Maar mij lukt het niet...

Maar misschien denk ik ook wel veel te moeilijk en ligt de oplossing geheel ergens anders in InDesign of in een andere opmaak van de XML?

Alle oplossingen, ideeën hulp en gedachten over dit probleem zijn meer dan welkom.

Groet,


Robin.


InDesign en XML met terugkerende elementen vormgeven.
27 februari 2009 - 01:03    reactie #1
geplaatst door: Marcel Verschuren
Hallo Robin,

Bedankt voor de tip. Ik werk af en toe met XML en Indesign, maar ik wist niet dat je ook anchord frames kon plaatsen met daarin een XML-tag (met variabele tekst dus).

Ik heb het voorbeeld op pag. 23 gedaan. Bij mij lukte het wel.
Eerst heb ik een eenvoudig XML-opbouw gemaakt (incl. anchord frame) en het geheel geëxporteerd als XML.
Daarna het xml-bestand aangepast. Ik heb het gedeelte wat de frame genereert gekopieerd en op een andere plek nog eens geplakt. Tevens de de inhoud van dat frame verandert.
Als ik nu het aangepaste XML bestand binnen haal, ontstaan er 2 anchord frames. met een verschiilende tekst.
Ik wist niet dat dit mogelijk was, erg mooie oplossing (voor het geval ik het ooit nodig heb  :biggrin: )

Hier is mijn test xml bestandje dat uit Indesign kwam:
<?xml version="1.0" encoding="UTF-16" standalone="yes"?>
<Voorbeeld><Story>
tekst1
tekst2
<kantlijn>kantlijn tekst1</kantlijn>
tekst3
tekst4
tekst5
</Story>
<kantlijn>kantlijn tekst1</kantlijn>
</Voorbeeld>


daarna aangepast:
<?xml version="1.0" encoding="UTF-16" standalone="yes"?>
<Voorbeeld><Story>
tekst1
tekst2
<kantlijn>kantlijn tekst1</kantlijn>
tekst3
tekst4
<kantlijn>kantlijn tekst2</kantlijn>
tekst5
</Story>
<kantlijn>kantlijn tekst1</kantlijn>
</Voorbeeld>


Na het importen krijg ik een frame met twee anchored frames. 1x met tekst "kantlijn tekst1" en met "kantlijn tekst2".

Als je wil kan ik je de bestanden sturen.
Marcel

InDesign en XML met terugkerende elementen vormgeven.
27 februari 2009 - 01:05    reactie #2
geplaatst door: Marcel Verschuren
oeps.. de XML code wordt niet goed weer gegeven hier..  :wacko:

met "code" knop krijg ik het ook niet goed... eum.. zit niet anders op om bestanden te sturen denk ik.
Marcel

InDesign en XML met terugkerende elementen vormgeven.
2 maart 2009 - 09:59    reactie #3
geplaatst door: RobinS
Hoi Marcel,

Allereerst bedankt voor je reactie en de toegestuurde XML. Ik kan zien dat het inderdaad bij jou wel lukt. Dit geeft mij hoop dat ik met wat aanpassingen het in mijn XML ook werkend kan krijgen.

Sorry voor de late reactie was weg van het weekend (had de vrijdag er ook vrij bij genomen).
Dus ik begin er nu pas net weer naar te kijken.

Nogmaals bedankt. zodra het gelukt is of ik weer vragen heb zijn jullie de eerste die het weten.

InDesign en XML met terugkerende elementen vormgeven.
2 maart 2009 - 12:51    reactie #4
geplaatst door: RobinS
Ik krijg het in het klein nu ook voor elkaar dankzij jouw voorbeeld (Marcel).
Maar zodra ik extra elementen toevoeg wil het niet meer?
Als ik aan jouw voorbeeld bijvoorbeeld een label (element) broodTekst toevoeg.
Dan werken de automatisch terugkerende labels (elementen) niet meer?

het bestand van jouw ziet er dan zo uit

</Voorbeeld>
</Story>tekst1 tekst2
</kantlijn>kantlijn tekst1</kantlijn>
</broodTekst>tekst3 tekst4 tekst5 tekst6 tekst7 tekst8 tekst9 tekst10 tekst11</broodTekst>
</kantlijn>kantlijn tekst2</kantlijn> tekst12 tekst13 tekst14 tekst15 </Story>
</kantlijn>kantlijn tekst1</kantlijn>
</Voorbeeld>

Het enige wat ik dan verandert heb is "tekst3 tekst4 tekst5 tekst6 tekst7 tekst8 tekst9 tekst10 tekst11" in het label (element) </broodTekst> te zetten.
Als ik dit dan kopieer zou het automatisch in moeten springen maar dat doet het helaas dan niet meer? Iemand enig idee waarom het zonder dit extra label het wel doet maar met niet?

Het lijkt er op deze manier op dat het alleen maar werkend is als je slechts een label (element) in je uiteindelijke tekst hebt? (ouder (parent) labels (elementen) lijken niet uit te maken).
Dit lijkt mij niet de bedoeling ik zal wel nog steeds iets fout doen.
Ik blijf proberen, hulp of tips van InDesigners is nog steeds zeer gewenst.

(Bewerkt door RobinS om 12:52, 2-03-2009)

InDesign en XML met terugkerende elementen vormgeven.
2 maart 2009 - 22:27    reactie #5
geplaatst door: Marcel Verschuren
Hallo Robin,

Ik heb, zoals in je voorbeeld code, een extra element toegevoegd ( <broodtekst) in mijn XML bestand.
Daarna dit aangepaste bestand ingelezen. Bij mij krijg ik de een extra element EN daarna ook de kantlijn blokken.
Dus lijkt dat het bij mij wel te werken.
Wat voor options gebruik je bij het inlezen van het XML bestand?
Ik heb:
"Cone repeating text elements" aan.
"Only import element that match exciting structure" uit

Over het inspringen:
Wat bedoel je met "automatisch inspringen" ?  Is dat te zien bij het plaatje uit het eerste berichtje.... bij 1 en bij 2 ?
Komt het misschien dat de mapping -paragraph style   niet juist staat ?

ik heb net gelezen in de help van indesign:
Important: The Map Tags To Styles command reapplies styles throughout a document, sometimes with unwanted results. When you map a tag to a style, text that was previously assigned to one style may be reassigned to another, depending on its XML tag. If you’ve already formatted some text, you might prefer to apply styles manually to prevent your paragraph and character style choices from being overridden.

Misschien is dat hier het geval of toch dat de map aan de juiste paragraph style.

Groetjes,
Marcel

InDesign en XML met terugkerende elementen vormgeven.
3 maart 2009 - 11:53    reactie #6
geplaatst door: RobinS
Hoi Marcel,

Ik heb inderdaad ook de opties zo staan.

Citaat
"Cone repeating text elements" aan.
"Only import element that match exciting structure" uit

Ik zal proberen iets duidelijker te zijn wat mijn probleem is.
En omdat beelden vaak meer dan woorden zeggen:

Als ik gebruik maak van slechts 1 onderliggend element (op dezelfde hoogte structuur als margeTekst). Dan heb ik geen enkel probleem. Vandaar dat jouw voorbeeld ook perfect werkt. Jij hebt inderdaad een extra element geplaatst maar deze ligt niet op dezelfde hoogte als het andere element.

Als ik echter een element toevoeg of op welke manier ook afwijk van de huidige structuur (door bijvoorbeeld een vreemd nieuw element te introduceren in de XML) Dan stopt de automatische anker generator, en werkt dit alleen voor het eerste element in de rij.

Ik maak overigens in deze voorbeelden geen gebruik van "The Map Tags To Styles" dit is dan ook j (nog) niet van toepassing op mij (denk ik?). Ik gebruik hier telkens gewoon nieuw aangemaakte InDesign documenten voor en kies telkens voor de Merge optie.

Mijn XML bestanden bestaan uit een bestand die slechts 3 elementen heeft.

De eerste ziet er zo uit.
- Voorbeeld (de ouder van de onderstaande twee).
   - margeTekst (kantlijn tekst1)
   - blah (tekst3 tekst 4 enx)

En de tweede is hetzelfde maar dan.
- Voorbeeld (de ouder van de onderstaanden).
   - margeTekst (kantlijn tekst1)
   - blah (tekst3 tekst 4 enx)
   - margeTekst (kantlijn tekst1)
   - blah (tekst3 tekst 4 enx)
   - margeTekst (kantlijn tekst1)
   - blah (tekst3 tekst 4 enx)
   -enz

De eerste gebruik ik om de template te maken in InDesign en vervolgens "Merge" ik de 2de om de automatische ankers te krijgen (die niet werken met de bovenstaande voorbeelden maar wel als ik het element "blah" weglaat).

Ik heb overigens een omslachtige oplossing in de tussentijd gevonden. Ik laat mijn boek XML met wat hulp van XLST omzetten naar alleen de margeTekst elementen. Deze zet ik op dezelfde manier als hierboven om naar ankers en vervolgens Merge ik de echte XML tekst, die dan gelukkig ziet dat de margeTekst al opgemaakt is met ankers en deze op de juiste plaats laat staan.

Ik vind het wel een erge omslachtige oplossing en ben dan ook nog steeds op zoek naar een betere methode dan de bovenstaande.

 

InDesign en XML met terugkerende elementen vormgeven.
3 maart 2009 - 23:37    reactie #7
geplaatst door: Marcel Verschuren
Hallo Robin,

Inderdaad, als je een andere element toevoegt.. werkt het niet meer..
Ik neem aan dat je XML opbouwt door elementen toe te voegen. Heb je al eens probeert om een opmaak te maken zoals je wil (incl. de verschillende toegevoegde regels) en dan deze als xml te bewaren.
Het is maar een idee. Misschien zie je een oplossing.

Wat betreft de hoogte van de anchored frame tov de regel links ervan, dat kan je instellen met de options,
zodat je het frame iets kan laten zakken.

In het voorbeeld ontstaat er een extra lege regel.... ik weet niet of je dat wil..

Soms ligt de oplossing zo dicht bij, maar om het toch goed werkend te krijg zo ver weg...  :confused:


InDesign en XML met terugkerende elementen vormgeven.
4 maart 2009 - 07:30    reactie #8
geplaatst door: Marcel Verschuren
Hallo Robin,

Er is een plugin van in-tools, voor her maken van een side-header.
Ik heb er nooit mee gewerkt. Maar misschien iets om naar te kijken.

http://www.in-tools.com/plugin.php?p=18

InDesign en XML met terugkerende elementen vormgeven.
4 maart 2009 - 09:26    reactie #9
geplaatst door: RobinS
Citaat

1.Heb je al eens probeert om een opmaak te maken zoals je wil (incl. de verschillende toegevoegde regels) en dan deze als xml te bewaren.

2.Wat betreft de hoogte van de anchored frame tov de regel links ervan, dat kan je instellen met de options, zodat je het frame iets kan laten zakken.
In het voorbeeld ontstaat er een extra lege regel.... ik weet niet of je dat wil..

1. Ik heb dit inderdaad al eens geprobeerd en als je de opgemaakte tekst exporteert naar XML dan maakt InDesign hier alleen maar ruwe XML van die er min of meer hetzelfde uit ziet als de XML die je geïmporteerd hebt.

2. Je kan inderdaad de anchored objects m.b.v. de options helemaal opmaken zoals je wil. Hier heb ik geen problemen mee, de witregel was inderdaad niet nodig. In mijn haast om een voorbeeld te genereren heb ik hem gewoon laten zitten.

Voelt inderdaad alsof de oplossing heel dichtbij zit. Zoals ik al aangaf kan ik het nu met wat extra tijd het omslachtig oplossen door de XML telkens in delen in te importeren.
Voor mensen die de oplossing willen weten heb ik hem hieronder in stappen gezet.

1. Je zoekt in je XML het element dat je wil opmaken met terugkerende ankers (maak een kopie van het originele bestand).
2. Je verwijdert alle andere elementen uit je XML (laat de tekst staan).
3. Je importeert de XML in Indesign (met het enkele element).
4. Dit element maak je 1x op met behulp van ankers (verwijder de andere elementen met dezelfde naam).
5. Importeer dezelfde XML nog een keer met de merge functie en "Clone repeating text elements" aan. en "Only import element that match exciting structure" uit (je zal zien dat alle elementen nu automatisch de anker functie hebben).
6. Importeer de kopie van de originele XML en de elementen die het anker al hadden zullen nu goed staan.
7. Verwijder helemaal onder aan je XML in de structuur bar links de kopie van de elementen (de Anker elementen zullen helemaal onderaan je document er voor een tweede keer in staan).


Vraagje nog aan Marcel en andere InDesigners, ik gebruik InDesign uit het CS3 pakket zijn er ook InDesigners die inmiddels met CS4 InDesign werken en heeft deze misschien extra oplossingen voor XML of de onderstaande plugin al automatisch ingebouwd?

Citaat
http://www.in-tools.com/plugin.php?p=18

De plugin die hierboven staat ziet eruit alsof het wel eens de makkelijkste oplossing zou kunnen zijn. Ik ga overleggen of ik deze nog aan kan schaffen.

Wederom bedankt Marcel voor alle informatie. Als iemand nog iets toe te voegen weet is dat uiteraard nog steeds welkom.