Brugerdefineret XML i Word 2007



Relaterede dokumenter
Gem dine dokumenter i BON s Content Management System (CMS)

MANUAL. Siteloom CMS

Opgave: Digitalisering af et dokument

Oprettelse af Titelblok i Capture og Capture CIS

Dokumentering af umbraco artikeleksport:

09/ Version 1.4 Side 1 af 37

MANUAL. Siteloom CMS

Kom godt i gang med ImageDB programmet fra PetriSoft

5. OPSÆTNING DOKUMENTSKABELONER 5.1 TRIN

Det Naturvidenskabelige Fakultet. Introduktion til Blackboard (Øvelser) Naturvidenskabeligt Projekt 2006 Prøv at forske

Redaktørvejledning for Skriv en artikel

MANUAL. Siteloom CMS

Indholdsfortegnelse Opret engelsk version af hjemmesiden... 2

Vejledning til redigering via iserasuaat.gl/typo3 - både frontend og backend

Pivottabeller, diagrammer og databehandling. Underviser: Nina Kirkegaard Schou Mobil

Administration af subsites BRUGERVEJLEDNING FOR ADMINISTRATOREN

Elevvejledning til SkoleKomNet - Min egen hjemmeside

ASB signatur. Figur a: eksempel. og hent filen asb_signatur.zip.

Den forudsætter kendskab til XML og C# men ikke til brug af XML i C#.

Mini brugermanual CMD 5.1

Introduktion til redigeringsfaciliteterne

Formular modul. Sitecore Foundry juli Version 1.0

I denne manual kan du finde en hurtig introduktion til hvordan du:

Advanced Word Template Brugermanual

KOM GODT I GANG MED. Desktop Mendeley Menuen er simpel og intuitiv. I Menuen Tools finder du web importer og MS Word plugin

1.TILBUD NYT TILBUD 1.1 TRIN FORUDSÆTNINGER

Tlf Fax

18/ Version 2.0 Side 1 af 36

Google Apps. Lær at oprette, organisere, dele og slette dokumenter. Udarbejdet af PLC, version 2013!!!!!!! Side 1 af 9

ViKoSys. Virksomheds Kontakt System

Hjemmeside manual. Indholdsfortegnelse. Noter: - 1 -

Det. Bind. Journal of. Citations. Impact Factor. Articles. Books. Patents

Her ser du dit arbejde i preview undervejs og udgiver dit arbejde når du er færdig. (se side 4)

Indhold. Jennie Mathiasen. Google Drev

ARBEJDE MED ÆNDRINGSSTYRING LibreOffice

Vejledning til opbygning af hjemmesider

Skabelonfilen er udarbejdet i Word til Windows (Office 2010) og er også afprøvet i Word til Mac.

TILLÆG TIL MANUAL Excel-indlæsning i Vvskatalogets administrationssystem

Brugervejledning Indstillinger og Funktioner

[jobsøgende] sådan gør du... [søg job via jobnet.dk]

Vejledning i brug af GMAIL (Google)

WEB-DIRECT Brugerguide Eksportfunktion i WEB-DIRECT

NemHandel menuen 14.1

DKAL Snitflader REST Register

Qbrick s krav til video filtyper

Manual til Wordpress. 1. Log ind på din Wordpress-side. Indhold: Sådan opdaterer du din hjemmeside i Wordpress.

Kom godt igang med Indbo programmet fra PetriSoft Kort om Indbo: Indbo Free

Modul 2 - Computerens drev og tekstbehandling. Computerens netværksdrev og mappen dokumenter

Undervisning. E3 Den fulde pakke. Udleveringskopi af PowerPoint-præsentation

3.0 Velkommen til manualen for kanalen Shift Introduktion til kanalen Hvad er et spot? Opret et nyt spot 2

Generelt Windows tidligere versioner... 1 Windows Apple Mac Log på... 2 Rediger dokumentet Tilføj et tillægsdokument...

Implementeringsvejledning til FKG-datamodel version 2.5 for MS SQL Server og ArcGIS

Fra Excel til Capture part

Vejledning: AMUUDBUD.DK

Brugervejledning til Kørebog for Pocket PC

MailMax / Web v4.1. Brugsvejledning til webmail. Copyright 2003 Gullestrup.net

Daglig brug af JitBesked 2.0

Vejledning i brug af dli dokumenthåndteringssystemet til virksomheder

Brugervejledning til databrowseren

Den forudsætter kendskab til XML og VB.NET men ikke til brug af XML i VB.NET.

portal.microsoftonline.com

Supermarkedsmodellen for design af brugergrænseflade

MANUAL TIL PROJECTWEB UDBUDSPORTAL FOR TILBUDSGIVERE

IT-Brugerkursus. Modul 1 - Introduktion til skolens netværk og FC. Modul 1 - Introduktion til FC og Lectio. Printvenligt format. Indholdsfortegnelse

Vejledning i opsætning af NemHandelsprogrammet

Version 8 Outlookintegration

Vejledning i opsætning af NemHandelsprogrammet

Når du har medie filer i dit system vil det blive fremvist i de forskellige medie fremvisere afhængig af hvordan du type bestemmer og beliggenheden

Manual til administration af online booking

Vejledning til prækvalifikation. Rev.: / LW. Side 1

Oktober Dokumentpakker

GeoGIS2020. Installation. Udkast. Revision: 1 Udarbejdet af: BrS Dato: Kontrolleret af: Status: Løbende Reference: Godkendt af:

Sådan installeres og teste WordPress på en lokal server

Collect - brugermanual til Y s Men

ASB signatur. ASB signatur. Vejledning til opsætning af signatur IKT - Februar 2008

IFC Egenskaber. Mohammad Hussain Parsianfar s BYG DTU

TeamShare 2.1 Versionsnoter Oktober 2009

Regnskab. med Microsoft Excel Lav dit regnskab med Excel. 28 lektioner opgavefiler. ms Excel 2016 niveau: Lidt kendskab til Excel

5.0 Velkommen til manualen for kanalen HTML-grab Introduktion til kanalen HTML-grab kanalside Hvad er et spot?

Brugermanual til Assignment hand in

Nolde Museet. I gang med Dreamweaver. Opgave. Opgavebeskrivelse. Layout. Mål og CSS

UC Syddanmark

BørneIntra hjemmesidekursus

MANUAL TIL PROJECTWEB UDBUDSPORTAL FOR TILBUDSGIVERE

Du får her en kort beskrivelse af, hvordan du kommer i gang med at oprette en opkrævning som elektronisk faktura e Faktura i Business Online.

Dan Rolsted PIT. Side 1

Velkommen til MODx kursus

Startvejledning. Microsoft PowerPoint 2013 ser anderledes ud end tidligere versioner, så vi lavet denne guide for at gøre din læreproces nemmere.

SARA. Kvik Guide 2. udgave. Denne vejledning vil på mindre end en time vise dig, hvordan du kommer i gang med at bruge SARA.

Vejledning til de bydende

Huskesedler. Design og automatisering af regneark. Microsoft Excel 2013

10.0 Velkommen til manualen for bruger administration Introduktion til manualen Menuen Startside

Brug af Office365 med Onedrive, nyeste Officepakke mv

Hvad er SkyDrive Pro og hvordan bruges det?

Finanstilsynets indberetningssystem. Vejledning til Regnearksskabelonerne

AgroSoft A/S AgroSync

Vejledning til brug af Y s Men s klubintranet administrator guide

Opgavestyring, op og download af mange filer

Manual til Dynamicweb Februar 2010

Billeder på hjemmeside

Transkript:

Brugerdefineret XML i Word 2007 Af René Løhde, Microsoft April 2007 Download: EfakturaMedEOOXML.zip Resumé Microsoft Word er et hyppigt valgt tekstbehandlingsværktøj blandt privat personer og virksomheder. Word er en applikation, som ofte er omdrejningspunktet for første data indtastning i forbindelse med sagsbehandling, emails, breve, referater, agendaer...og et utal af andre arbejdsgange. Microsoft Word er, kort fortalt, en applikation som faciliterer udarbejdelsen af tekstdokumenter struktureret ved hjælp af formatering.det vil sige at tekst kan gøres fed, punkt opsættes, farvelægges osv. for at opnå en læsevenlig struktur. For langt de fleste brugere er dette et velkendt faktum, som man ikke behøver tænke dybere over. Med den stadig større mængde at data, som produceres i traditionelle kontordokumenter, er strukturering ved hjælp af formatering en stigende udfordring for de forretningsapplikationer, som skal processere data i dokumenterne. Dette er fordi præsenteret datas repræsentation, i et typisk tekstdokument fremstår som en ustruktureret masse for IT systemer. Blandt andet derfor, kan det iagttages at store mængder vigtige data eksisterer i xml. Xml er et foretrukket valg i mange sammenhænge, hvor strukturering, standardisering og interoperabilitit er relevante elementer, men der er ikke scenarier, hvor i den almindelige bruger udarbejder sine dokumenter i rå xml ej heller er xml dokumenters tekst præsentation det alment foretrukne format, når et dokument skal gennemlæses. Derfor er det et mål for flere software leverandører, at deres applikationer skal kunne arbejde med en anvendelig præsentation af de, i xml eksisterende data. For at imødekomme dette, er der i Word 2003 og 2007 skabt en konvergens mellem det produktive freeform miljø, som eksisterer i arbejdet med kontordokumenter og det stærkt strukturerede miljø som kendes fra databaseverden. Word 2007 kan benyttes som læser/skriver af xml-dokumenter, på en måde så xml-bidderne bevares i dokumenter for sig uden at disse dokumenter på nogen som helst måde er berørt af at være blevet behandlet i Word. Word tilbyder unikke muligheder for at arbejde med indlejret xml, og ECMA Open Office Xml standard filformatet i Word 2007 - er designet til at kunne håndtere scenariet. Denne artiklen beskriver de konceptuelle muligheder, giver et eksempel på anvendelsen og en vejledning til hvordan man gør det i praksis.

Indledning Værdien af struktureret datafangst, der hvor data typisk etableres, har fået et stigende fokus i de senere år. I takt med at flere og flere kontordokumenter ser dagens lys, bliver det til stadighed mere vigtig at disse data kan tilgåes, genbruges, analyseres og danner grundlag for at træffe vigtige forretningsmæssige beslutninger. I 2002 introduceredes Microsoft Office 2003 og hermed fik brugerne mulighed for at lave egne strukturer i Word. Det blev muligt at tilknytte et xml schema til et Word dokument og dermed få udtrykt egne strukturer i et ellers traditionelt tekst dokument. Med Office OpenXML dokumentformatet, som blev standardiseret i standardiseringsorganisationen ECMA i slutningen af 2006 (http://www.ecmainternational.org/publications/standards/ecma-376.htm), og som er default format i 2007 Microsoft Office System er mulighederne for at arbejde med egne stukturer blevet endnu bedre. Denne artikel viser en af de muligheder for sammenspil mellem et brugerdefineret/valgt xml vokabularie og ECMA OOXML. Derudover vil artiklen vise, hvordan dette sammenspil realiseres med Word 2007.Det betyder dog ikke, at Word 2007 er en nødvendighed for at lave et ECMA OOXML med egne definerede strukturer og denne øvelse kan laves ved hjælp af en tekst editor og en applikation til zip komprimering. Artiklen viser et eksempel på brugen af custom xml i ECMA OOXML. Custom xml'en er den såkaldte efaktura også kendt som OIOUBL, som er gældende standard for elektronisk fakturering af offenlige myndigheder. OIOUBL er en dansk lokalisering af standarden UBL. Artiklen giver ikke en indførelse i OIOUBL eller forsøger på nogen måde at lave en fuld valid efaktura. Valget af OIOUBL som custom xml eksempel skal tjene som inspiration, og samtidig sikre en vis kompleksitet og dermed skabe et virkelighedsnært scenarie. Del 1 Kort om Ecma Office Open XML Et ECMA OOXML dokument er en struktur bestående af en række enkelt elementer som hver især udgør et delelement og som til sammen udgør et fuldt tekstdokument, regneark eller præsentationsdokument.

Figur 1 En forenklet fremstilling af indholdet i de enkelte elementer man kunne kalde dem underfoldere - er at de indeholder en eller flere xml instanser og en beskrivelse i et andet xml dokument, som fortæller hvordan denne underfolders xml dokumenter relaterer sig til det komplette ECMA OOXML dokument. De enkelte del elementer er: Dokument metadata Kommentarer Tekst/regneark/præsentationn Brugerdefineret XML Multimedia Kode og macroer Diagrammer Dokument egenskaber indeholder det der traditionelt betegnes som metadata på dokumentet. Kommentarer indeholder ja et xml dokument med kommentarer. Dokumentfolderen indeholder de dokument karakteristika, der er tilknyttet henholdsvis regneark, tekst eller præsentationsdokument. Custom XML delen er lavet til at indeholde specielle strukturer som brugere selv måtte ønske at indlejre i dokumentet f.eks strukture som mødeagenda, faktura, order, etc. Der er også en folder til de multimedie elementer, en folder til kode og macroer og endelig en folder til diagrammer typisk relateret til regneark. Figur 2

I praksis gælder det derfor for et ECMA OOXML dokument, at der er tale om et relationsdokument og en række foldere med xml dokumenter, som zippes til en struktur et ECMA OOXML dokument.. Dokumentet og brugerdefineeret xml (custom XML) En stor styrke ved ECMA OOXML er muligheden for at knytte struktureret data i et dokument til en bestemt sektion i præsentationen af dokumentet. Overordnet fungere det således: I dokumentfolderen ligger præsentationensdata for ECMA OOXML dokumentet. Denne præsentation kan indeholde data, men den kan også indeholde reference til data som bør indlejres bestemte steder i præsentationen. Denne reference bliver angivet ved hjælp af xpath udtryk. De data som refereres ligger i custom xml folderen. Figur 3a Figur 3b På figur 3a ses præsentationen af en dato i ECMA OOXML. Til højre på figur 3b - ses repræsentationen af en del af præsentationen eller med andre ord billedet til venstre er en grafisk fortolkning af xml en til venstre (NB. Der er kun tale om et uddrag af xml en). I xml en på figur 3b ses en xpath mappning i præsentationsdokumentet, som skal indlejre data fra et IssueDate -element i custom xml en. Det xmlelement IssueDate - som dette xpath udtrykker peger på kan findes i et dokument i CustomXML folderen og er vist i figur 4. Figur 4 Ovenfor er skitseret hvordan præsentation af data synkroniseres med et datalager inde i et ECMA OOXML dokument. Et overbliksbillede findes på figur 5.

Figur 5 Et ECMA OOXML tekstdokument er åbnet i Word 2007 -> dette dokument kan som nævnt repræsenteres ved en række del elementer -> et af disse delelementer er en folder, der kan indeholde et xml dokument -> dette xml dokument kan være af en vilkårlig struktur -> elementer i det vilkårlige xmldokument kan refereres gennem kontroller i den grafisk fortolkning af ECMA OOXML dokumentet. Eller med andre ord: Et ECMA OOXML dokument i Word 2007 kan bruges til at præsentere og opdatere enkelte elementer eller hele dokumentet, alt efter behov, i et vilkårligt xml dokument. Med struktureret data skabt på desktop kommer databaseadministratorer til atjuble specielt hvis de har en database, som kan indeksere typestærke xmldokumenter. Din IT chef vil kunne opstille nye services

som, kan filtrere dokumenter intelligent hvad enten dokumenter flyder internt eller eksternt og forretningsfolkene i din organisation vil elske at kunne lave realtids monitorering på data i dokumenterne. Del 2 Resten af denne artikel vil vise, hvordan en efaktura instans kan lægges i custom xml folderen og hvordan de rigtige relationer kan etableres mellem præsentation og struktur. Det gøres på en sådan måde, at det sætter brugeren i stand til at lave OIOUBL fra Word 2007 ved hjælp af Ecma Office Open XML File Formats. Formålet med at vælge efakturaen som eksempel, er taget for at bruge en kompleksstruktur, som hermed kan forsimples og gøres brugervenlig ved udarbejdelse og editering. Følgende skridt bliver fulgt for at realisere denne øvelse: Valg af custom xml - i dette tilfælde efakturaen Valg af en skabelon, som skal bruges af slutbrugerne til udarbejdelse og redigering af efakturaen Beskrivelse af kontroller til brug ved synkronisering mellem skabelonen og efaktura xml en Kontrollers indpasning i skabelonen og disse mappning til efakturaens elementer Udarbejdelse af en efaktura fra Word Redigering af en efaktura i ECMA OOXML fra kode Som det er med mange andre nye teknologier er der såkaldte faldgruber, som det er en fordel at kende på forhånd. I forbindelse med udarbejdelsen af et scenarie, som er beskrevet i denne artikel, er der to ting som man bør have for øje inden man prøver sin første custom xml implementering. 1. Der er investeret megen tid i at forstå hvordan og hvilke elementer som bør være tilstede for at skabe efakturaen. Et godt råd til førstegangsbrugere af denne teknologi kunne være at starte med en mindre kompleks struktur end efakturaen. Start f.eks med et custom xml dokument med en rod og to børn og et namespace for hele dokumentet. 2. Gentagelser hvis custom xml en indeholder gentagelser som det f.eks er tilfældet i en faktura (fakturaen kan have flere orderlinier) så er det nødvendigt på forhånd at specificere hvor mange gentagelser, som kan optræde dette er ikke en begrænsning i ECMA OOXML formatet eller i custom xml en, men en begrænsning i hyldevaren Word 2007 s implementering. Hvis man kan komme over disse to faldgruber så ligger der mange gevinster - i form af strukturerede office dokumenter - og venter lige om hjørnet. Her følger et eksempel på hvad der skal til for at komme i gang. Efakturaen custom xml En efaktura instans kan tilvejebringes på flere måder. OIOUBL xml schemaerne kan downloades fra InfoStrukturBasen (http://isb.oio.dk) og fra disse kan flere værktøjer bruges til automatisk at lave en valid xml instans. I denne artikel bruges blandt andet en xml instans, som kan hentes i en pakke stillet til rådighed fra OIO.dk (http://www.oio.dk/files/exampledisplays.zip). Instansen i pakken er "PIElarge.xml". Den største arbejdsmæssige byrde i denne øvelse ligger i at forstå hvilke elementer og attributter, som bør indgå i en valid efaktura, og hvordan data skal repræsenteres. I den forbindelse er xml schemaerne en god normativ reference - alternativt for en lettere indføring i OIOUBL findes der en quick-reference på denne side http://xmltools.oio.dk/oioonlinevalidator/efakturahurtigtdokumentation.html, som giver en lettere introduktion til, hvordan en valid OIOUBL instans skabes.

Et andet værktøj, som kan være til hjælp i forbindelse med en trial'n'error metodetilgang til etablering af instansen er denne online validator - http://xmltools.oio.dk/oioonlinevalidator/. Her kan instanser valideres og eventuelle fejl og advarsler vil blive kommunikeret via validatorens hjemmeside. I online versionen af denne artikel er der et link til en zipfil (EfakturaMedEOOXML.zip), som blandt andet indeholder en tom xml instans - Faktura.xml. Dette er ikke en valid OIOUBL instans, blandt andet fordi den ikke indeholder data - dog er det et repræsentativt dokument, udfra hvilket der kan laves et validt OIOUBL dokument. Den tomme OIOUBL instans bruges senere i denne artikel, hvor instansen tilknyttes et ECMA OOXML dokument. En ECMA OOXML skabelon For at få lagt en OIOUBL faktura ind i et ECMA OOXML dokument vil vi tage udgangspunkt i en virksomheds etablerede faktura skabeloner. I denne artikel findes en template til brug for for fakturaen via Office online. Åben en invoice template og gem den lokalt som en.dotx fil. Dette er skabelonen. 1. Tryk på Office ikonet i øverste venstre hjørne Figur 6 2. Office -> New -> Templates -> Invoices -> [...og en template] eller lav din egen template som passer dig/ din virksomhed.

Her er valgt denne template: Original skabelon Lokaliseret version af original Figur 7 Til højre på figur 7 ses en lokalisering af skabelonen, hvor nogle felter på fakturaen er udskiftet eller fjernet for at komme tættere på de datastrukture, som er gældende i efakturaen. For at finde ud af hvilke felter, der bør være tilstede i skabelonen og for at få fakturaen i overensstemmelse med efakturaen, kan man med fordel kigge på dokumentationen for efaktura. Der er meget god hjælp på denne side http://xmltools.oio.dk/oioonlinevalidator/efakturahurtigtdokumentation.html for en hurtig indføring. Content controls Med 2007 Microsoft Office System introduceres en ny kontrol, som stiller brugeren i stand til at lagre specifikke strukturer, så f.eks Word bliver et datafangst system kombineret med tekstediterende egenskaber. Det er i sig selv ikke nyt, da man også i Microsoft Office 2003 var i stand til at lave egendefinerede datastrukturer ved hjælp af xml schemaer. Det nye ved content controls er, at de giver en meget bedre brugeroplevelse end det man hidtil har kunnet lave omkring struktureret datafangst på skrivebordet. Derudover får skabelondesigneren mulighed for at guide brugeren igennem en skabelon og dermed minimeres mulighederne for fejlindtastninger i dokumentet. Samtidigt bliver kompleksiteten reduceret, da det ikke er nødvendigt at involvere xml schemaer i designet af skabelonen for at få fastlagt en speciel struktur i dokumentet.

Næste skridt i denne artikel er at få etableret sektioner i dotx-skabelonen, der kan mappes til de elementer eller attributter, som er i en, endnu ikke eksisterende, bagvedliggende efaktura.xml. Med andre ord, hvordan sikres det, at de data som indtastes i skabelonen f.eks FakturaNr og bliver lagret i elementet com:id i OIOUBL en. Her følger nogle trin som skabelondesigneren skal følge for at få adgang til content controls. Når ovenstående dotx-skabelonen åbnes (husk at det skal være selve skabelonen, der åbnes og ikke et instans dokument af denne), er der mulighed for at kunne til at lægge Content controls ind. Det er dog nødvendigt at få adgang til den såkaldte Developer-tab. Developer-tabben er ikke tilgængelig, som default i Word 2007, så for at få adgang til Developer -tabben gøres følgende: 1. Tryk på Office ikonet i øverste venstre hjørne Figur 8 2. Tryk på Word Option i dropdown menu Figur 9 3. Check Show Developer tab in the Ribbon Figur 10 På nedenstående billede ses, hvordan menu-ribbon i Developer -tabben efterfølgende viser de ting som er til rådighed for content controls ( Controls ). Figur 11

At indsætte meningfulde content controls kan være et relativt stort stykke arbejde, og at finde frem til hvilke dele i skabelonen, som bør mappe til elementer i OIOUBL kræver omhu. For nogle elementer i efakturaen gælder det, at der skal laves ekstra felter på skabelonen for at tilgodese kravene til obligatoriske data i OIOUBL. Igen er der god hjælp at hente fra OIOUBL en quick-reference dokumentationen. I OIOUBL reference dokumentet fremgår det hvad, der er nødvendigt at have med i en efaktura. I materialet til denne artikel er brugen af content controls et skøn fra forfatternes side, mere end det er et eksakt match med OIOUBL. NB! For at få et eksakt match med OIOUBL kan man med fordel læse Xml Schema Definitionerne (XSD erne) for at få fastlagt helt nøjagtigt hvad minimum er for indholdte data i en efaktura. De enkelte content controls sættes ind i skabelonen Målet med at indsætte content controls er dels at give en bedre brugeroplevelse ved udfyldelse af skabelonen dels at sørge for at der kommer en mappning mellem den visuelle content control og den bagvedliggende efaktura. Figur 12 Ovenstående viser en tekst content control, som er markeret med navnet FakturaNr. Læg mærke til at den tomme content control har et blåt tag med eget navn. Pilen og xml dokumentet til højre skal illustrere, hvilket element i efakturaen vi ønsker at mappe data indholdet af FakturaNr -kontrollen til. Den menu, som stilles til rådighed for skabelondesigneren, ses her nedenfor på figur 13. På billedet er kontrollen date-picker valgt og man kan se at Design Mode er markeret. Figur 13

I skabelonen vil man derfor nu kunne se en date-picker content control indsat der, hvor cursor er at finde. Hvis man tilsvarende trykker på Aa som er tekstbox content control en vil en textbox indfinde sig der, hvor cursor er i skabelonen. På figur 14 ses denne kontrol, som den tager sig ud i dokumentet i Design Mode : Figur 14 Der er seks indbyggede content controls i Word 2007 almindelig tekst, datovælger, udvidet tekst, billede, dropdown liste og combo box. Hver af disse kontroller har en række properties. Afhængigt af hvilken content control der vælges, kan der være forskellige muligheder for at tilknytte properties. Trykker man på Properties for en valgt content control, vil en typisk dialog se sådan ud: Figur 15 Her indsættes navnet på den content control som er valgt i dotx-skabelonen. I Title property skrives det som ønskes vist i det blå titelfelt i en content control det er det felt, som senere bliver synligt for brugeren af skabelonen. I Tag property feltet indsættes det navn man ønsker skal fremkomme i de hvide tagfelter. Figur 16 Det er en god ide at navngive Title og Tag på en sådan måde, at det giver mening for både skabelonudvikleren og de senere brugere. For eksempel kan et dokument indholde flere tlf content

controls. I den forbindelse kan det være en fordel, at man eksplicit fortæller hvilket telefonnummer der er tale om f.eks SælgersKontaktpersonsMobilTlfnr. Her er et eksempel på en efaktura-ecma-ooxml-skabelon i design mode, med en række content controls. Figur 17 Når det rigtige antal content controls er etableret, er det vigtigt at mappe de enkelte kontroller til xml elementer i den tilknyttede instans xml. F.eks skal content controle FakturaID mappes til OIOUBL element med xpath /ns0:invoice[1]/ns2:id[1] og hvor xml namespaces alias er er hhv. xmlns:ns0='http://rep.oio.dk/ubl/xml/schemas/0p71/pie/' og xmlns:ns2='http://rep.oio.dk/ubl/xml/schemas/0p71/common/'. Det er muligt at lave denne mappning manuelt via en hvilken som helst teksteditor mere om dette på http://openxmldeveloper.org/articles/mapping_content_controls_to_custom_xml_parts_using_notepad. aspx Heldigvis er der også en anden og langt nemmere måde at få etableret denne mappning. Mere om dette senere i artiklen.

Et custom xml vokabularie tilknyttes skabelonen. På denne side - http://www.oio.dk/dataudveksling/ehandel/efaktura - findes en zip-pakke med en valid OIOUBL instans - http://www.oio.dk/files/exampledisplays.zip. Zip-filen exampledisplays.zip kan udpakkes og inde i pakken findes PIElarge.xml - I materialet til denne artikel har vi lavet en kopi af PIELarge.xml tømt den for data dvs. efterladt tags, namespaces, attributværdier etc., men fjern indholdet i elementer og attributter. Vi har forsøgt finde frem til et validt minimum for indhold i fakturaen resultatet af denne øvelse er efaktura.xml PIElarge.xml med indhold efaktura.xml uden indhold Figur 18 efaktura.xml er efaktura-instans-dokument, som skal mappes til.dotx -skabelonen. Der er flere måder at gøre dette på, men med Word 2007 er den nemmeste metode at starte Visual Basic editoren fra developertabben -> Eksekvere et lille script -> og gemme skabelonen efter at scriptet har kørt en gang.

Figur 19 Scriptet som skal køres har følgende kode (sæt selv den rigtige sti til xml kopien ind): ActiveDocument.CustomXMLParts.Add.Load("C:\Faktura.xml") Husk at dette script kun skal køres en gang. Nu er der tilknyttet en xml instans til skabelonen, som i sidste ende skal repræsentere de strukturer, som indtastes i dokumentet. De enkelte content controls tilknyttes OIOUBL xml elementer Som tidligere skrevet er det muligt at forbinde data fra content controls med xml elementer i en tilknyttet instans ved hjælp af configuration i en simpel teksteditor. Der findes dog en nemmere metode til mappning mellem content controls og disses xml repræsentation i efakturaen. Word 2007 content controle toolkit er et lille værktøj lavet med henblik på at mappe content controls til deres respektive xml repræsentationer i et tilknyttet custom xml instans. Word 2007 content controle toolkit kan downloades her: http://www.codeplex.com/dbe. Når programmet Word 2007 content controle toolkit startes og vores dotx-skabelon åbnes kommer følgende frem:

Figur 20 Venstre side indeholder de content controls, som er en del af dotx-skabelonen. Højre side indeholder den tomme efaktura xml instans, som blev scriptet sammen med skabelonen ovenfor. Læg mærke til, at der i ovenstående eksempel er unikke Tag-navne på alle content controls. Det gør det meget nemmere for

skabelondesigneren at mappe de rigtige elementer til de rigtige content controls. Netop derfor er det en god ide at give sigende tag-navne til de enkelte content controls. Nu mappes de enkelte content controls til xml en ved at markere enkelte xml elementer i højre side og drag e disse over på specifikke content controls i venstre side. Figur 21 Når denne drag n drop øvelse er overstået, er der en mappning mellem alle content control er og deres komplementære xml element.

Herefter trykkes på Save -ikonet og skabelonen gemmes med tilhørende xml struktur (efaktura) med mappning mellem skabelonens content control er og xml en i efakturaen. Skabelonen er nu færdig. En OIOUBL instans etableres vha. ECMA OOXML Hvis der dobbeltklikkes på skabelonen vil den åbne som en instans. Man kan nu bruge denne skabelon til at udfærdige efaktura xml instanser samtidigt med, at man har alle de ting til rådighed, som er en naturlig del af ECMA OOXML dokumentformatet. Figur 22 Ovenfor, på figur 22, ses en fakturainstans af den udarbejdede skabelon. Indeholdt i det viste dokument er en efaktura xml instans, hvilket umiddelbart ikke er synligt i præsentationen af det samlede ECMA OOXML dokument. Kun data og præsentation er synlig på den semi-strukturerede måde, som man kan opnå ved at bruge den klassiske visuelleskabelon. For at få adgang til informationen i efakturaen - OIOUBL en -

omdøbes dokumentet f.eks fra efaktura-sample.docx til efaktura-sample.docx.zip. Herefter kan zip filen navigeres og eventuelt udpakkes på traditionel vis. Man kan navigere frem til den folder, som hedder CustomXML og finde det dokument som hedder item1.xml : Figur 23 Her findes dokumentet items1.xml, som er en OIOUBL instans vist på figur 24. Figur 24

Læg mærke til at dokument ikke viser synlige tegn på nogensinde at have været andet end et OIOUBL dokument. Der er ikke introduceret nye namespaces eller aliaser. Dokumentet er blevet det dataskabende grundlag for fakturaen og kan som sådan tages ud seperat og behandles efter behov. Udskiftning af custom xml i et ECMA OOXML dokument Man kan erstatte efaktura-instansen inde i ECMA OOXML dokumentet. Man tager F.eks PIElarge.xml : Figur 25 Denlægges ind i CustomXML folderen i zip filen:

Figur 26 NB! HUSK at ændre filnavnet på PIElarge.xml til items1.xml. Hvis man ændrer filnavnet på zip filen fra efaktura-sample.docx.zip tilbage til efaktura-sample.docx kan man, hvis man åbner i Word 2007, se følgende: Figur 27 Præsentationsmæssigt set er det stadig det samme ECMA OOXML dokument som før, men nu er customxml en ændret fra en efaktura instans til en anden og derfor er data i dokumentet ændret. Ændring af faktura fra kode Indtil nu har artifakterne i denne artikel kunne tilvejebringes ved hjælp af en Word 2007, evt. en tekskeditor og et ziphåndteringsværktøj. Dette kan dog hurtigt blive en flaskehals og et behov for automatisering kan hurtigt komme på tale. Typisk vil f.eks en bulk -ændring eller en forretningspåtegnelse af dokumenter kræve en automation, som inddrager et eller flere programmers opdatering af dokumenterne.

Lad os antage at firmaet PJ Unconstruction flytter firma domicil og derfor skal have ændret deres adresse i alle fakturaer. Vi ønsker derfor at lave en lille applikation som er i stand til at åbne et dokument og ændre den gamle adresse til den nye. Den information vi behøver i den forbindelse er at vide at adresse data for sælger ligger i ECMA OOXML zipcontainer -> Custom Xml -> item1.xml -> Xpath( default:invoice/com:sellerparty/com:address ), vi har behov for at kende hvilke namespaces, som ligger bag aliaserne og så har vi behov for at kende den nye adresse. Herefter bliver det op til den enkelte udvikler og politik i vedkommendes virksomhed at afgøre hvilken platform og ved hjælp af hvilket sprog en applikationen skal skrives. I følgende kode eksempel er sproget C# og platformen.net 3.0.

using System; using System.Collections.Generic; using System.Text; using System.IO; using System.IO.Packaging; //Husk reference til WindowsBase.dll using System.Xml; namespace WordML_manipulation1 { class Program { //Ecma OOXML dokumentet, med efaktura som skal manipuleres private static String docxsti = @"C:\Users\renel\Desktop\efaktura.docx"; static void Main(string[] args) { //Instansiering af zippakke (dokumentet) using(package docxfil = Package.Open(docxSti, FileMode.Open, FileAccess.ReadWrite)) { //Relativ sti til efakturaen (CostumXml'en) i zipfilen Uri relcustomxmlsti = new Uri("/customXml/item1.xml",UriKind.RelativeOrAbsolute); //Del af zipfilen (faturaen) instantieres i hukommelse PackagePart customxmldel = docxfil.getpart(relcustomxmlsti); //Via stream overføres fakturaen til et xml dokument XmlDocument customxmldokument = new XmlDocument(); customxmldokument.load(customxmldel.getstream()); //For at få adgang til elementerne i dokumentet er det nødvendig for //xmldokuments objectet at have kendskab til relevante namespaces XmlNamespaceManager mngr = new XmlNamespaceManager(customXMLDokument.NameTable); mngr.addnamespace("def","http://rep.oio.dk/ubl/xml/schemas/0p71/pie/"); mngr.addnamespace("com","http://rep.oio.dk/ubl/xml/schemas/0p71/common/"); //De relevante noder udvælges via Xpath udtryk og ændres XmlNode vej = customxmldokument.selectsinglenode( "/def:invoice/com:sellerparty/com:address/com:street", mngr); vej.innertext = "Vejen"; XmlNode husnummer = customxmldokument.selectsinglenode( "/def:invoice/com:sellerparty/com:address/com:housenumber", mngr); husnummer.innertext = "888"; XmlNode bynavn = customxmldokument.selectsinglenode( "/def:invoice/com:sellerparty/com:address/com:cityname", mngr); bynavn.innertext = "Helsingør"; XmlNode postnummer = customxmldokument.selectsinglenode( "/def:invoice/com:sellerparty/com:address/com:postalzone", mngr); postnummer.innertext = "3000"; //Nu da der er lavet en komplet faktura kan vi slette den gamle //(her kan man med fordel tilføje noget transaktionsstyring) docxfil.deletepart(relcustomxmlsti); //Der kan oprettes en ny del i zippakken, som skal indholde faktura xmldokumentet PackagePart nycustomxml = docxfil.createpart(relcustomxmlsti, "application/xml"); //Der instantieres en stream til at skrive til StreamWriter writer = new StreamWriter(nyCustomXml.GetStream( FileMode.Create,FileAccess.Write)); //Efakturaen med de nye værdier skrives til zippakken writer.write(customxmldokument.outerxml); writer.flush(); writer.close(); //docxfil bliver automatisk flush'et og lukket qua using statement i starten af dette scope } } } }

I eksemplet bruges namespacet System.IO.Packaging til håndtering af zippakke. Derefter laves en kopi af custom xml dokumentet i et System.Xml.XmlDocument object. I dette object er det muligt via Xpath udtryk at finde frem til de adresse noder som skal ændres og til sidst kan den gamle custom xml slettes og en ny kan sættes ind. Husk at lave en reference til Windowsbase.dll for at få adgang til namespacet System.IO.Packaging. Ændringen i dokumentet kommer til at få følgende præsentation: Figur 28 Eksempler på manipulering af ECMA OOXML ved hjælp af andre programmeringssprog kan findes på http://www.openxmldeveloper.org. Konklusion I denne artikel har vi vist, hvordan filformatet i 2007 Microsoft Office System kan bruges til lave instansdokumenter af andre xml vokabularier. Samtidigt har vi adresseret behovet for at give brugerne af kontorapplikationer en brugsoplevelse, som er i tråd med den de kender - at de ikke skal forlade det miljø de arbejder i til dagligt, samtidigt med at de stadig har alle de faciliteter til rådighed som udgør en fuld kontorapplikation. Ydermere er Content Controls det element, som giver brugerne guidance, styring og sikrer at datakvaliteten bevares på desktoppen. ECMA OOXML er det som sikrer at data kan tilgåes og bearbejdes i bagvedliggende forretningssystemer og at disse data altid er tilgængelige, fordi format er beskrevet som en åben standard. Brugen af Custom Xml i ECMA OOXML giver brugerne og virksomheder mulighed for at indlejre egne forretningsvokabularier i kontordokumenterne på en måde, som gør dokumenter og data tilgængelige for forretningssystemer, som ERP, Business Intelligence, Reporting, Datamining etc. Fordele ved denne tilgang til dokument formatet kan blandt andet været mindre filstørrelse og de muligheder, som ligger ved et tekstbaseret format som xml. Et forsigtigt gæt på en fremtidig udvikling ved fremsendelse af denne type kontordokumenter vil være at der kan opstå et marked for det som populært bliver kaldt XML firewalls måske mere korrekt i dette tilfælde for en zip/xml firewall. Et muligt forretningsscenarie for en sådan firewall kunne f.eks en applikation f.eks hos en organisation, som smager på et dokument, der afsendes fra organisationen og enten fjerner kommentarer eller sender den retur til afsender med et spørgsmål om vedkommende virkelige ønsker at sende dokumentet med de indlagte kommentarer og metadata til modtageren. Kommentarer og spørgsmål til artiklen adresseres til René Løhdes blog: http://blogs.msdn.com/renel Ressourcer: http://xmltools.oio.dk/oioonlinevalidator/efakturahurtigtdokumentation.html http://msdn2.microsoft.com/en-us/library/ms771890.aspx