Monday 13 November 2017

Xsl Output Metode Binære Alternativer


Jeg bruker Apache Camel-filkomponent og xslt-komponent Jeg har en rute hvor jeg henter en xml-melding, transformer ved hjelp av xslt og slipper til en annen mappe. Apache kamel DSL-rute. Jeg nevner Apache-kamel også her for å sjekke om det er en vei å sette ut filnavnet ved hjelp av Camel Jeg tror, ​​selv uten Camel, det ville være en mekanisme med ren XSLT. Jeg må omdøpe den transformerte utdatafilen, men alltid får jeg det samme innspillingsfilnavnet med det forvandlede innholdet, i utgangsmappen. eg input fil utdatafil med transformasjonen applied. What jeg leter etter er som utdata filnavn Utgangsdata er korrekt. Jeg prøvde xsl result-document href, men da er utdata xml tom. Vennligst help. Output XML når du bruker xsl resultat - dokumentet href i XSLT. Output XML når du ikke bruker xsl resultat-dokument href i XSLT. Edit redigert XSLT som per MartinHonnen s comment. Running XSLT fra Command Line. A kommandoen er tilgjengelig for å bruke et gitt stilark til en gitt kilde XML dokument for simp le transformasjoner på Java-plattformen, bruk kommandoen. java - s kilde - xsl stylesheet - o output. where kilde stilark og utdata er kilde XML-filen, XSLT-stilarket, B henholdsvis utdatafilen. For plattformen, kommandoen er simply. Transform - source - xsl stylesheet - o output. For en skjemabevisst transformasjon, spesifiser alternativet - sa eller på Java-plattformen, bruk bare alternativt inngangspunkt. For mer informasjon, se Schema-Aware Transformations. For tilbakekompatibilitet med tidligere utgivelser, kan prefiksene - s og - xsl utelates, forutsatt at kildedokumentet og stilarket er de to siste alternativene før parametere for søkeordverdier. Mer generelt består argumentene av et antall alternativer prefiks med - og deretter valgfritt for bakoverkompatibilitet kilden filnavn og eller stilark filnavn, deretter en rekke parametere gitt som søkeord verdi par Alternativene må komme først, deretter filnavnene hvis tilstede, og parametrene. For dette til å fungere , må alle nødvendige Java-komponentene være tilgjengelige på klasseplanen. Se Installasjon for detaljer om hvordan du konfigurerer klassestien. Hvis du ikke bruker noen andre Java-biblioteker, kan du bruke enklere form for kommando dette eksemplet er for hjemmearbeidet. java - jar dir-valgparametere. Merk at dette ikke virker hvis du må laste inn brukerskrevne utvidelsesfunksjoner eller andre klasser fra klassepathen. Det vil derfor ikke fungere hvis stilarket bruker utvidelsesfunksjoner eller andre plugin-komponenter for eksempel parsers eller URI resolvers. Alternativene er som følger i en hvilken som helst rekkefølge. Bruk xml-stilarkbehandlingsinstruksjonen i kildedokumentet for å identifisere stilarket som skal brukes. Stylesheet argumentet må ikke være tilstede på kommandolinjen. Filnavn er enten en filnavn eller en liste over filnavn adskilt av semikolonene filene er OASIS XML-kataloger som brukes til å definere hvordan offentlige identifikatorer og systemidentifikatorer URIer brukt i et kildedokument, stilark eller skjema er til b e omdirigert, vanligvis til ressurser som er tilgjengelige lokalt. For mer informasjon, se. Angir at konfigurasjonsinformasjon skal hentes fra den medfølgende konfigurasjonsfilen. Eventuelle alternativer som leveres på kommandolinjens overstyringsalternativer angitt i konfigurasjonsfilen. Bruk spesifisert CollectionURIResolver til å behandle samling URIer passert til samlingsfunksjonen CollectionURIResolver er en brukerdefinert klasse som implementerer grensesnittet. Sette - dtd på forespørsler DTD-basert validering av kildefilen og alle filer som leses ved hjelp av dokumentfunksjonen Krever en XML-parser som støtter validering Innstillingen - dtd av som er standard undertrykker DTD validering Innstillingen - dtd recovery utfører DTD validering, men behandler feilen som ikke-dødelig hvis den mislykkes. Merk at en ekstern DTD sannsynligvis vil bli lest selv om den ikke brukes til validering, fordi DTD kan inneholde definisjoner av enheter . Normalt, hvis validering ved hjelp av en DTD eller Schema er forespurt, vil eventuelle faste eller standardverdier som er definert i DTD eller skjemaet vil bli utvidet Spesifiser-ekspandering undertrykker dette Når det gjelder DTD-definerte standardinnstillinger, virker dette kanskje ikke med alle XML-parsere. Det virker med Xerces-parser-standard for Java og Microsoft-parserens standard for. Vis en utførelse plan for stilarket Dette er en representasjon av uttrykketreet etter omskrivning av optimaliseringsprogrammet. Den komprimerer XSLT-instruksjonene og XPath-uttrykkene i et enkelt tre. Hvis ikke noe filnavn er spesifisert, sendes utgangen til standardfeilstrømmen. Utgangen er et tre i XML-format. Hvis ekstern er angitt, undertrykker samtaler på dynamisk lastede eksterne Java-funksjoner Dette påvirker ikke anrop på integrerte utvidelsesfunksjoner, inkludert saksiske og EXSLT-utvidelsesfunksjoner Dette alternativet er nyttig når du laster et usikkert stilark, kanskje fra et eksternt nettsted bruker en nettadresse det sikrer at stilarket ikke kan kalle vilkårlig Java-metoder og dermed få privilegert tilgang til ressurser på maskinen. Velg init Ial-modus for transformasjonen Hvis dette er namespaced, kan den skrives som lokalnavn. Verdien er navnet på en bruker-tildelt klasse som implementerer grensesnittet denne initieringen vil bli kalt under initialiseringsprosessen, og kan brukes til å angi noen alternativer Kreves i konfigurasjonen programmatisk. Det er spesielt nyttig for slike oppgaver som registrering av utvidelsesfunksjoner, samlinger eller eksterne objektmodeller, spesielt i Saksisk-HE, hvor alternativet ikke eksisterer for å gjøre dette via en konfigurasjonsfil. Valg av den opprinnelige navngitte mal som skal være utført Hvis dette er navneskilt, kan det skrives som lokalt navn Når dette alternativet er brukt, trenger du ikke å levere en kildefil, men hvis du gjør det, må du levere det ved hjelp av - s alternativet. Hvis - l eller - l på er angitt, fører til at linjestykkene og kolonnene opprettholdes for kildedokumenter. Disse er tilgjengelige ved hjelp av utvidelsesfunksjonene saxonlinjenummer og saxon kolonne nummer. Linjenumre er nyttige når formålet med stilarket er å finn feil eller uregelmessigheter i kilde XML-filen Uten dette alternativet er linjenummer tilgjengelige mens kilde dokumenter blir analysert og validert, men de blir ikke beholdt i trerepresentasjonen av dokumentet. Bruk den angitte mottakeren til å behandle utdata fra xsl-meldingen Klassen må implementere klassen Dette grensesnittet ligner på en SAX ContentHandler, det tar en strøm av hendelser for å generere produksjon Generelt er innholdet i en melding et XML-fragment Som standard brukes standard XML-emitteren, konfigurert til å skrive til standarden feilstrøm og å inkludere ingen XML-deklarasjon Hver melding blir utført som en ny serie av samtaler til denne Mottakeren er som følger det er et enkelt åpent anrop ved begynnelsen av transformasjonen, og en enkelt nært samtale på slutten og hver evaluering av en xsl-meldingsinstruksjon starter med en startDocument-samtale og slutter med endDocument StartDocument-hendelsen har et egenskapsargument som angir om terminasjon ja er spesifisert, og l ocationId på samtaler som startElement og tegn kan brukes til å identifisere plasseringen i stilarket der meldingsdataene oppsto dette, oppnås ved å sende den medfølgende posisjonen i en samtale til eller til getLineNumber på samme klasse for å få xsl-meldingsutgang varslet til JAXP ErrorListener som beskrevet i JAXP-dokumentasjonen. Angir verdien av nåværende datoTid og implisitt-tidssone for transformasjonen. Dette er laget for testing, slik at repeterbare resultater kan oppnås for sammenligning med referanseresultater, eller for å teste at stilark kan håndtere viktige datoer og tider som slutten av året behandling. Send utdata til navngitt fil I fravær av dette alternativet, går resultatene til standardutgang Hvis kildeargumentet identifiserer en katalog, er dette alternativet obligatorisk og må også identifisere en katalog på ferdigstillelse vil det inneholde en utdatafil for hver fil i kildekatalogen Hvis stilarket skriver sekundære utdatafiler ved hjelp av xsl-resultatdokumentet nt instruksjon dette filnavnet fungerer som basen URI for href-attributtet til denne instruksjonen. I fravær av dette alternativet skrives sekundære utdatafiler i forhold til gjeldende arbeidskatalog. Filen er opprettet hvis den ikke allerede eksisterer, vil nødvendige kataloger også være opprettet Hvis filen eksisterer, overskrives den, selv om transformasjonen mislykkes, men ikke hvis transformasjonen ikke produserer noen hovedresultattree. Set optimaliseringsnivå Verdien er et heltall i området 0 ingen optimalisering til 10 full optimalisering for øyeblikket alle andre verdier enn 0 resulterer i full optimalisering, men dette vil trolig endres i fremtiden. Standard er full optimalisering Denne funksjonen gjør det mulig å undertrykke optimalisering i tilfeller der redusering av kompileringstid er viktig, eller hvor optimalisering blir i vei for feilsøking, eller forårsaker utvidelsesfunksjoner med side - effekter for å oppføre seg uforutsigbart Merk imidlertid at selv uten optimalisering kan lat evaluering fortsatt føre til evalueringsordren til ikke som forventet. Bruk spesifisert OutputURIResolver til å behandle utdata-URIer som vises i href-attributtet til xsl-resultatdokument. The OutputURIResolver er en brukerdefinert klasse som implementerer grensesnittet. Normalt, hvis validering av resultatdokumenter blir bedt om, er en valideringsfeil dødelig Angi alternativet - utvinningsgjenoppretting fører til at slike valideringsfeil blir behandlet som advarsler. Valideringsmeldingen er skrevet både til standardfeilstrømmen og hvor det er mulig som en kommentar i selve resultatdokumentet. Bruk PTreeURIResolver Dette alternativet er tilgjengelig i saksisk - Kun PE og Saksisk-EE Den kan ikke brukes sammen med alternativet - r, og den slår automatisk på - u og - sa-alternativene. Effekten er todelt. For det første blir Sakson-spesifikke filutvidelser gjenkjent i URIer, inkludert URIen til Kildedokument på kommandolinjen For øyeblikket er den eneste saksiske spesifikke filtypen som indikerer at kildedokumentet leveres i form av en saksisk PTree Dette er ab Inarrepresentasjon av et XML-dokument, designet for hastighet av lasting For det andre blir saksonspesifikke spørringsparametere gjenkjent i en URI. Den eneste spørringsparameteren som er gjenkjent, er val. Dette kan ta verdiene strenge lax eller strip. For eksempel laster et dokument med strenge skjema validering. With standardinnstillingen vil kommandoen avbryte Java VM og returnere en exit kode hvis det oppstår en feil Dette er nyttig når du kjører fra et operativsystem shell Når innstillingen avsluttes, slår kommandoen i stedet en RunTimeException som er mer nyttig når kommandoen påberopes fra et annet Java-program som Ant. Use den angitte URIResolver for å behandle alle URIer. URIResolver er en brukerdefinert klasse som utvider klassen, hvis funksjon er å ta en URI levert som en streng og returnere en SAX InputSource Det påberopes å behandle URIer som brukes i dokumentfunksjonen, i xsl include og xsl importelementene, og hvis - u er også spesifisert for å behandle URIene til kildefilen e og stilarkfil som er oppgitt på kommandolinjen. Formater transformasjonen N ganger, hvor N er det angitte heltallet Dette alternativet er nyttig for ytelsesmåling, siden timings for den første transformasjonen ofte domineres av Java oppvarmingstid. Identifiserer kildefilen eller mappe Obligatorisk med mindre det er valgt et alternativ. Kildefilen analyseres for å opprette et tre, og dokumentknutepunktet til dette treet fungerer som det første kontekstelementet for navnet identifiserer en katalog, alle filene i katalogen blir behandlet individuelt I dette tilfellet er - o-alternativet obligatorisk, og må også identifisere en katalog for å inneholde tilsvarende utdatafiler. En katalog må spesifiseres som et filnavn, ikke som et kilde-dokument kan angis som - for å ta kilden fra standard input For bakoverkompatibilitet kan kildefilnavnet også angis umiddelbart før stilarkets filnavn, uten - s-flagget, forutsatt at - alternativet ikke er tilstede. Inkluder et skjema-awar e-transformasjon Krever Saxon-EE som skal installeres Disse alternativene er ikke nødvendig hvis enten et annet alternativ som indikerer skjemabevissthet er tilstede for eksempel - val streng eller b stilarket inneholder en xsl-import-skjema-erklæring. Angir hvilken hvite plass som skal fjernes fra Kildedokumenter gjelder både for hovedkildedokumentet og for alle dokumenter som er lastet for eksempel ved hjelp av dokumentfunksjonen. Standarden er uvitende. Alle ignorere hvite områder er fjernet. Blanketter i tekstblokkene er uvitende hvis de vises i elementer som er definert i DTD eller skjemaet som å ha element-bare innhold Angir alle striper alle tekstblokktekstene i tekstfiler fra hvem som helst, før noen viderebehandling, uavhengig av eventuelle xsl-strip-romdeklarasjoner i stilarket eller noen xml-romattributter i kildedokumentet. Angi uhellbare striper, alle uhyggelige tekstblokktekster fra kildedokumenter før noen videre behandling, uavhengig av eventuelle xsl strip-rom-deklarasjoner i stilarket, eller noen xml-romattributter i kildedokumentet. Angi ingen undertrykker all whitespace-stripping med mindre det blir forespurt andre steder, for eksempel ved hjelp av xsl strip-space. Visningsversjon og timinginformasjon til standard feilutgang. Utgangen sporer også filene som leses og skrives, og utvidelsesmoduler som er lastet. Viske stilarksporingsinformasjon Dette sporer utførelsen av hver instruksjon i stilarket, slik at utgangen kan være ganske voluminøs. Skifter også linjenummering på for kildedokumentet. Hvis et klassenavn er spesifisert, er det en brukerdefinert klasse som må implementere Hvis klassenavnet er utelatt, er en systemleverandør av sporingslytteren opptaksprofilering, sett klassenavn til Dette skaper en utdatafil som gir tidsberegninger for hver instruksjon som er utført. Denne utdatafilen kan etterfølgende analyseres for å gi en kjørelengdeprofil for stilarket. Se Prestasjonsanalyse . Brukes bare når - s-alternativet spesifiserer en katalog Kontrollerer antall tråder som brukes til å behandle filer i katalogen Hver transformasjon går i en enkelt tråd. Bryter på sporing av binding av samtaler til eksterne Java-metoder Dette er nyttig når du analyserer hvorfor Saxon ikke klarer å finne en Java-metode for å matche et utvidelsesfunksjonsanrop i stilarket, eller hvorfor det velger en metode over en annen når flere er tilgjengelige. Dette tilsvarer innstillingen og - sporing av filnavn som er, det fører til at sporprofilinformasjon blir satt til den angitte filen. Denne utdatafilen kan etterfølgende analyseres for å gi en kjørelengdeprofil for stilarket Se Prestasjonsanalyse. Angir at utdataene fra sporingsfunksjonen skal rettes til en spesifisert fil Alternativt kan du spesifisere ut for å rette utgangen for å feile for å sende den til standard eller null for å ha den kassert. Dette alternativet ignoreres når en sporlytter er i bruk i så fall går sporeffekten til den registrerte sporlytteren. Velg implementeringen av den interne tremodellen - tree liten velger den lille tremodellen default - tree linked velger den koblede tremodellen - tree tinyc velger den kondenserte lille tremodellen Se Velge en tremodell. Angir at navnene på kildedokumentet og stilarkdokumentet er nettadresser ellers de tas som filnavn, med mindre de starter med eller fil, i så fall blir de tatt som URLs. Requests skjemabasert validering av kildefilen og av filer som leses ved hjelp av dokumentet eller lignende funksjoner. Validering er bare tilgjengelig med Saxon-EE, og dette flagget slår automatisk på - sa-alternativet Spesifiser - val eller - val streng for å be om streng validering, eller - val lax for lax validering. Hvis versionsversjoner er av angitt, undertrykker varslingsvarsler Dette undertrykker advarselsmeldingen som normalt utstedes som kreves av W3C-spesifikasjonen når du kjører en XSLT 2 0 prosessor mot et stilark som spesifiserer versjon 1 0. Angir politikken for å håndtere gjenopprettelige feil i stilarket stille betyr gjenopprette stille, gjenopprette betyr gjenopprette etter å ha skrevet en advarselsmelding til systemfeilutgangen, dødelige midler signaliserer feilen og ikke forsøke gjenoppretting Merk: Dette gjelder for øyeblikket ikke alle feil som XSLT-anbefalingen beskriver som gjenopprettelig. Standard er gjenopprett. Bruk spesifisert SAX-parser for kildefil og eventuelle filer lastet ved hjelp av dokumentfunksjonen Parseren må være det fullt kvalifiserte klassenavnet til en Java-klasse som implementerer eller grensesnittet. Bruk av dette alternativet er å velge en HTML-parser, for eksempel John Cowans TagSoup, i stedet for en XML-parser. I dette tilfellet TagSoup JAR-filen må være på klassestien, og klassenavnet som skal brukes, er vanlig, er å spesifisere Denne parseren leveres av Apache Commons-prosjektet, og den tilpasser standardparameteren ved å bruke en EntityResolver som løser eksterne entitetsreferanser som viser referansen til en ekstern DTD i en DOCTYPE-erklæring ved hjelp av en OASIS katalogfil Dette kan brukes til å unngå gjentatte samtaler til eksterne webservere som W3C-serveren for felles har brukt DTDer som XHTML DTD. Apply XInclude-behandling til alle input-XML-dokumenter, inkludert skjema og stilarkmoduler, samt kildedokumenter. Dette fungerer for øyeblikket bare når dokumenter blir analysert ved hjelp av Xerces-parseren, som er standard i JDK 1 5 og senere. If - xmlversion 1 1 er spesifisert, tillater XML 1 1 og XML Namespaces 1 1 konstruksjoner Dette alternativet må settes hvis kilde dokumenter som bruker XML 1 1 skal leses, eller hvis resultatdokumenter skal serialiseres som XML 1 1 Dette alternativet gjør det også mulig å bruke XML 1 1-konstruksjoner i stilarket selv. Løser ytterligere skjemadokumenter Erklæringene i disse skjemadokumenter er tilgjengelige når du godkjenner kildedokumenter eller for bruk av valideringsuttrykket. Dette alternativet kan også brukes til å levere plasseringen av skjemadokumenter som importeres til stilarket, i tilfelle hvor xsl-import-skjema-deklarasjonen gir målnavnet for skjemaet, men ikke dets plassering. Hvis xxversjon 1 1 er angitt, tillater XML Sc hema 1 1 konstruksjoner som påstander Dette alternativet må angis hvis skjemadokumenter som bruker XML Schema 1 1 skal leses. Hvis det er satt til standard, prøver skjemaprosessoren å laste inn noen skjemadokumenter referert i xsi schemaLocation og xsi noNamespaceSchemaLocation attributter i instans dokument, med mindre et skjema for det angitte navneområdet eller det ikke-navneområdet allerede er tilgjengelig. Hvis det er satt til av, ignoreres disse attributter. Angir filen som inneholder den viktigste stilarkmodulen Obligatorisk med mindre alternativet - a eller - c brukes. Verdien - identifiserer standardinndatastrømmen Hvis - u-alternativet er spesifisert, må verdien være en URI i stedet for et filnavn. Bestemmer om en XSLT 2 0-prosessor eller XSLT 3 0-prosessor skal brukes. Som standard er verdien tatt fra versjonens attributten av xsl stylesheet element. Use spesifisert SAX parser for stilark fil, inkludert alle lastet med xsl include eller xsl import Parseren må være det fullt kvalifiserte klassenavnet til en Jav en klasse som implementerer eller grensesnitt. Sett en funksjon definert i konfigurasjonsgrensesnittet Navnene på funksjonene er definert i Javadoc for klasse FeatureKeys verdien som brukes her er delen av navnet etter sist, for eksempel --allow-ekstern - Funksjoner av Bare funksjoner som aksepterer en streng eller boolesk kan settes for boolesker, verdiene er sanne falske, på av, ja nei og 1 0 er gjenkjent. Synkronisering av synkronisering av kommandoer. Par tar navnet på navnnavn som navnet på parameteren, og verdien verdien av parameteren Disse parametrene er tilgjengelige i stilarket som vanlige variabler, ved hjelp av navnetsyntaxen, forutsatt at de er deklarert ved hjelp av et toppnivå xsl param-element Hvis det ikke foreligger en slik erklæring, ignoreres den medfølgende parameterverdien hvis xsl param-elementet har et som attributt som indikerer den nødvendige typen, og strengverdien som følger med på kommandolinjen, kastes til denne typen, dette kan føre til en feil, for eksempel hvis et heltall er påkrevet og supp løyververdi kan ikke konverteres til et heltall Hvis parameteren er erklært med alternativet statisk ja nytt i XSLT 3 0, blir verdien tilført som en statisk parameterverdi. En parameter foran et ledende spørsmålstegn tolkes som et XPath-uttrykk. For eksempel tid nåværende-dateTime setter verdien av stilarket parameteren tiden til verdien av gjeldende dato og klokkeslett, som en forekomst av xs dateTime mens feilsøking false angir verdien av parameter debug til den boolske verdien false Hvis parameteren har en nødvendig type for eksempel xsl param navn p som xs dato må den tilførte verdien være kompatibel med denne typen i henhold til standardreglene for konvertering av variable verdier og funksjonsargumenter Den statiske konteksten for dette XPath-uttrykket inkluderer bare standardnavnene som er konvensjonelt bundet til prefikset xs fn xsi og saxon Den statiske basen URI som brukes når du ringer doc-funksjonen, er den nåværende katalogen Den dynamiske konteksten inneholder ingen kontekstelement, - posisjon eller - størrelse, og ingen variabler. En parameter foran et ledende utropstegn tolkes som en utgangsparameter. For eksempel innrykk ja forespørsler innspilt utgang. Dette tilsvarer å spesifisere attributtinnrykket ja på en xsl-utgangsdeklarasjon i stilarket. En utgangsparameter angitt på kommandolinjen overstyrer en spesifisert i stilarket For parametere doctype-system doctype-public og saxon next-in-chain blir en nulllengdeverdi behandlet som fraværende, det vil si at effekten er å avbryte en verdi som ble angitt i stilarket. Hvis du bruker bash-skallet, må du unnslippe som. A-parameter foran et ledende plustegn tolkes som et filnavn eller katalog. Innholdet i filen blir analysert som XML, og den resulterende dokumentknuten sendes til stilarket som Verdi av parameteren Hvis parameterverdien er en katalog, blir alle de umiddelbart innebygde filene analysert som XML, og den resulterende sekvensen av dokumentnoder blir sendt som verdien av parameteren F eller eksempel, setter verdien av stilarkparameteroppslaget til dokumentknuten ved roten av treet som representerer det analyserte innholdet i filen. Under de fleste operativsystemer er det mulig å levere en verdi som inneholder mellomrom ved å omslutte den i to sitater, for Eksempelnavn John Smith Dette er en funksjon i operativsystemskallet, ikke noe saksisk gjør, slik at det kanskje ikke fungerer på samme måte under alle operativsystemer eller kommandoprosessorer. I jEdit-konsollets plugin må det for eksempel skrives som navn John Smith. Hvis parameternavnet er i et ikke-null-navneområde, kan parameteren gis en verdi ved hjelp av syntaksen localname value Her uri er navneområdet URI av parameterens navn og lokalnavn er den lokale delen av navnet. Dette gjelder også for utgangsparametere Du kan for eksempel sette innrykksnivået til 4 ved hjelp av parameterinnrykk-mellomrom 4 I dette tilfellet blir imidlertid leksikalske QNames ved hjelp av prefiksaksonen også gjenkjent, for eksempel saxonindrykk-mellomrom 4 Se også Ekstra serialiseringsparametere. Hvis - a-alternativet er brukt, blir navnet på stilarket utelatt. Kildedokumentet må inneholde en XML-stilarkbehandlingsinstruksjon før den første elementstart-taggen. Denne behandlingsinstruksjonen må ha en pseudoattributt href som identifiserer relative eller absolutt nettadresse til stilarket, og en pseudoattributttype hvis verdi er tekst xml-applikasjon xml eller tekst xsl For eksempel. xml-stilark type tekst xsl. It er også mulig å referere til et stilark som er innebygd i kildedokumentet, forutsatt at det har et id attributt og id-attributtet er deklarert i DTD som å være av typen ID For eksempel. xml-stilark type tekst xsl href style1 DOCTYPE BOOKLIST SYSTEM ATTLIST xsl transform ID ID IMPLISJERT BOOKLIST xsl transform id style1 versjon 1 0 xmlns xsl xsl transform BOOKLIST. Saxon Developer Guide Ikke-JavaScript Version. The funksjonen transformToXML har et problem med meta innholdstypen tag Det utdataer det som dette. meta innholds tekst html charset UTF-8. som ikke er riktig X HT ML fordi det lukkes med i stedet for with. A. måte å få utdataene riktig til, er å bruke i stedet for transformToXML først transformToDoc anf og saveHTML . domTranObj xslProcessor - transformToDoc domXmlObj domHtmlText domTranObj-saveHTML. Entities er utelatt fra utdata med koden over Symptomet var at nbsp - som skal fungere med UTF-8-koding - kom ikke engang til XSLTProcessor, enn si gjennom det. mye hacking Jeg oppdaget det enkle reparasjonssettet substituteEntities til true i DOMDocument for XSL-filen Det er, erstatte lastingen av xsl-dokumentet med. php xsl new DOMDocument xsl - substituteEntities sant lagt linje xsl - load. However mislykkes dette når dataoppføringer har HTML-enhet referanser Noen databaseoppføringer kan til og med inneholde brukergenerert tekst libxml har pedantisk vane å kaste en FATAL feil for en udefinert entitiy Solution hide enhetene så libxml ser ikke dem. php funksjon hideEntities data returnerer strreplace amp data. You kan bare legge til dette i eksemplet, men det er tidier å definere en funksjon for å laste data inn i et DOMDocument På denne måten trenger du ikke entitetsdeklarasjoner i heller. php Lagt til funksjon for eksempel 1. Last inn en XML-fil og opprett en DOMDocument Håndterer vilkårlig enheter, selv udefinerte funksjoner filToDOMDoc filnavn dom nye DOMDocument xmldata filegetcontents filnavn xmldata strreplace amp xmldata disguise s går IN til loadXML dom - substituteEntities true collapse s går ut til transformToXML dom - loadXML xmldata return dom. Sammenlign med eksempel 1 Transformere til en streng. Last inn XML kildene xml fileToDOMDoc xsl fileToDOMDoc. Konfigurer transformatoren proc ny XSLTProcessor proc - importStyleSheet xsl. transform xml i henhold til stilarket xsl echo proc - transformToXML xml forvandle dataene. Jeg la merke til en inkompatibilitet mellom libxslt php4 og transformasjonen gjennom XSLTProcessor Php5 og XSLTProcessoren synes å legge til implisitte CDATA-delelementer. Hvis du har en xslt like. script-type tekst javascript foo xsl verdi-av velg bar script. It vil resultere i. i hvert fall for utgangsmetode xml for å produsere streng xhtml med xslt1.That bringer opp en feil minst i Firefox 1 5 siden det ikke er gyldig javascript Det burde se slik ut. Som CDATA-seksjonen er implisitt, kunne jeg ikke deaktivere produksjonen eller å sette en før den. Jeg prøvde alt om xsl-tekst deaktivere-utgang-flykte ja. Jeg prøvde også å deaktivere implisitt tillegg av CDATA med output cdata-delelementer Jeg trodde det ville utelukke script-tags Det gjorde ikke t. xsl tekst deaktivere-utgang-rømning ja ltscript type tekst javascript gt foo xsl tekst xsl verdi-av velg bar xsl tekst deaktivere-utgang-rømme ja lt script gt xsl tekst. Simple, men det tok meg en stund. transformToXML, hvis du tidligere har registrert PHP-funksjoner, forsøker du å utføre disse funksjonene når den finner dem i en php-funksjon pseudo-XSL-funksjonen Det finner til og med statiske funksjoner i klasser, for eksempel. xsl verdi-av velg php funksjon MyClass MyFunction, streng attr, streng deaktivere-utgang-escaping yes. However, i denne situasjonen forsøker transformToXML ikke å utføre MyClass MyFunction I stedet utfører den myclass myfunction I PHP, siden klasser og funksjoner er jeg tenk ikke tilfelle, dette gir ingen problemer. Et problem oppstår når du kombinerer disse funksjonene med autoload-funksjonen. Så si at jeg har som inneholder MyFunction-definisjonen. Generelt, hvis jeg kaller MyClass MyFunction, vil PHP passere MyClass til autoload og autoload vil åpne. Hva vi nettopp har sett, betyr imidlertid at transformToXML vil passere myclass til autoload, ikke MyClass, med konsekvensen at PHP vil prøve å åpne som ikke eksisterer, inst ead av som gjør det i tilfelle uansett operativsystemer, dette er ikke signifikant, men på min RedHat server er det - PHP vil gi en fil ikke funnet feil. Den eneste løsningen jeg har funnet er å redigere autoload-funksjonen for å lete etter klassenavn som brukes i mine XSL-filer, og bytt dem manuelt til riktig casing. En annen løsning er selvsagt å bruke all-små bokstaver og filnavn. Det ser ut til at heinemann s bruk ikke er riktig og ikke oppnår det tiltenkte resultatet. Denne metoden er å endre en global xsl param-verdi i XSL-stilarket - ikke å endre et attributt for noe annet element xsl param lar deg i utgangspunktet sette opp et stilark som kan tilpasses fra PHP eksternt uten å måtte tukle med Den originale XSL-filen. Her er et eksempel på bruk som vil fungere. xml versjon 1 0 xsl stilark versjon 1 0 xsl param navn printsomething velg defaultstring xsl mal match mydoc p stil farge rød Printet parameter xsl verdi-av velg utskrifter noe p xsl mal xsl stilark. php dom new DOMDocument xsl ny XSLTProcessor xsl - setParameter printsomething Nå har jeg overgått standard stilen realpath dom - load stil xsl - importStyleSheet dom dom - loadXML mydoc mydoc. ut xsl - transformToXML dom. vardump pre, htmlentities ut ENTQUOTES utf-8, xsl - getParameter printsomething, pre. streng 143 xml versjon 1 0 p stilfarge rød Utskrevet parameter Nå har jeg overgått standard p streng 32 Nå har jeg overgått standardstrengen 6.Notice som for øyeblikket legger til et navneområde, vil ikke fungere Det eneste alternativet for øyeblikket er å sette den første parameter for navneområde til en tom streng, selv om du kan legge til prefiks med kolon til det andre argumentet for navn for å angi parameteren for et navneområde-prefikset parameternavn. Eksempel på hvordan det fungerer. xml versjon 1 0 koding utf-8 xsl stilark versjon 1 0 xsl utgangsmetode xml innrykning ja koding ISO-8859-15 doktypesystem - W3C DTD XHTML 1 0 Overgangsløsning EN doktype-offentlig xsl mal samsvarer docs html hode tittel xsl tekst Eksempel xsl tekst tittelhode kropp xsl for-hver velg blokk div xsl verdi-av velg div xsl for-hver kropp html xsl mal xsl stilark. php dom nye DomDocument 1 0 utf-8 xsl nye XSLTProcessor xsl - setParameter blokk xmlns. stil realpath dom - last stil xsl - importStyleSheet dom. dom - loadXML docs blokk Hvordan sette xhtml Transitional Name spaces bredde php block blokk se block docs. xsl - getParameter docs xmlns, pre. XSLTProcessor removeParameter vant t arbeide med parametere satt via XSLTProcessor setParameter strengen navneområde de må settes og fjernes en etter en. Setting og bruk av variabler og parametere. 7. februar 2001. En variabel i XSLT har mer felles med en variabel i algebra enn med en variabel i et typisk programmeringsspråk. Det er navnet som representerer a value and, within a particular application of a template, it will never represent any other value -- it can t be reset using anything described in the XSLT Recommendation Some XSLT processors offer a special extension function to allow the resetting of variables. XSLT variables actually have a lot more in common with constants in many programming languages and are used for a similar purpose If you use the same value multiple times in your stylesheet, and there sa po ssibility that you ll have to change them all to a different value, it s better to assign that value to a variable and use references to the variable instead Then, if you need to change the value when re-using the stylesheet, you only change the value assigned in the creation of that variable. For example, imagine that we want to turn this XML. The following templates would accomplish this all file names refer to files in this zip file. but if you want to change the three font elements size attribute to 12pt , it would be too easy to miss one -- especially if the template rules weren t next to each other in the stylesheet The solution is to use a variable to represent this size value. When referencing a variable or parameter from a literal result element s attribute, you want the XSLT processor to plug in the variable s value You don t want a dollar sign followed by the variable s name at that point in the template To do this, put the variable inside curly braces to make it an attribute va lue template To plug a variable s value into the content of a result tree element, instead of an attribute value, use an xsl value-of instruction. In the example above, if the bodyTextSize variables were not enclosed by curly braces, each font start-tag in the result would have looked like this font size bodyTextSize. The xsl variable instruction creates a variable Its name attribute identifies the variable s name, and the value can be specified either as the xsl variable element s contents like the 10pt in the example or as the value of an optional select attribute in the xsl variable element s start-tag. The value of the select attribute must be an expression This offers two nice advantages. It shows that the xsl variable element isn t quite as limited as the constants used by popular programming languages because the variable s value doesn t need to be hardcoded when the stylesheet is written. The attribute value doesn t need curly braces to tell the XSLT processor this is an attribute v alue template, evaluate it as an expression, because it always evaluates an xsl variable element s select attribute value as an expression. The two xsl variable elements below have the same effect as the one in the example above they set the bodyTextSize variable to a value of 10pt The bodyTextSize variable has its value assigned in a select attribute instead of in its element content the value assigned will be the return value of a concat function that concatenates the string pt to the result of adding baseFontSize 2 What s baseFontSize It s another variable, which is defined above the bodyTextSize variable s xsl variable element That value of 8 is added to 2 and concatenated to pt to create a value of 10pt for the bodyTextSize variable, which can then be used just like the bodyTextSize variable in the previous example. The example above demonstrates some of the options available when using an expression in the select attribute to assign a variable s value The second xsl variable elemen t references another variable, does some math, and makes a function call Variables aren t as limited as many XSLT newcomers might think. It also demonstrates another nice feature of variables they don t have to be strings Once baseFontSize is set to 8 , the select value of the bodyTextSize variable s xsl variable element adds 2 to it and comes up with 10 If the XSLT processor had treated these number as strings, putting 8 and 2 together would get us 82 Instead, the XSLT processor treats the baseFontSize variable as a number It can treat a variable as any type of object that can be returned by an XSLT expression a string, a number, a boolean value, or a node set If an XSLT variable has a value assigned by an xsl variable element s contents and by a select attribute, the XSLT processor uses the one in the select attribute. The examples above show top-level variables They re defined with xsl variable elements that are children of the main xsl stylesheet element, making them global variables that can be referenced anywhere in the stylesheet. Variables can be local as well -- that is, defined inside of a template rule and only available for use within that template rule For example, the following templates have the same result as the ones in the examples above except that the font start-tag before the result winery element s content has a value of 12pt in its size attribute instead of 10pt. The way these templates assign these size values is different Instead of one global bodyTextSize variable to use throughout the stylesheet, the two template rules each have their own bodyTextSize variables declared between their xsl template tags The first one sets bodyTextSize to a value of 10pt , and that s what gets plugged into the size attribute values for the font tags that start the product year and price elements The second template sets bodyTextSize to 12pt , so the winery and grape element contents copied to the result tree by that template start with font tags that have a size value of 12pt. That s just a toy example The next stylesheet uses a selection of the string manipulation functions available in XSLT to right align the result tree versions of the color elements in this document. The fieldWidth global variable stores the desired column width the goal is to add spaces before each color value so that the spaces plus the color name add up to this value. The color element s template rule has two local variables. The value-length variable stores the length of the color name using the string-length function. The padding variable stores the number of spaces required to right-align the color name It does this by subtracting the value of the local valueLength variable from the global fieldWidth variable. Once the template rule knows how much space it needs to add to the result tree before adding the color element s contents, it adds that many spaces by using the substring function to pull that many spaces out of a string of spaces passed to the substring function as its first argument. In the result, red has nine spaces before it, blue has eight, and yellow has six. I could have done this without any local variables in fact, when I originally wrote this stylesheet, I did without them As with any programming language, using local variables made it easier to break down the problem into pieces and to make the relationship of those pieces easier to understand. The xsl param instruction is just like xsl variable with one important difference its value is only treated as a default value and can be overridden at runtime All the stylesheet examples up to this point would work the same way if you substituted xsl param elements for their xsl variable elements, but you would have the option of overriding the values when calling their templates. For example, let s take one of the earlier examples and make the substitution Here is how it looks as a complete stylesheet. If we run it as shown with the same source document, it produces the same result as the previous section s version that used xsl variable instead of xsl param. However, if we pass the stylesheet a value of 8pt to use for bodyTextSize it substitutes this new value for all uses of this parameter. Of course, I m skimming over one important detail here how do you pass the alternative value for the parameter to the stylesheet The XSLT Recommendation doesn t tell us In fact, it deliberately tells us that it s not going to tell us Just as the W3C s XSL Working Group wanted to leave the potential methods for giving input to and getting output from an XSLT processor as open as possible, they also didn t want to limit how the processors will be told a new value for a global parameter setting As we ll see, not all parameters are global like the bodyTextSize one above they can also be local to template rules So, it s up the particular XSLT processor s designer To pass the new value of 8pt to the stylesheet when using the Saxon XSLT processor, the command line might look like this. It s actually one command split over three lines to fit on the page here When really using Saxon or any other Java-based XSLT processor, it makes your life easier to store everything before the in that command line in a Windows batch file, a UNIX shell script, or your operating system s equivalent Then you can pass it the important parameters each time you run it with no need to type the full Java library names for the XSLT processor and XML parser. The only difference between applying the stylesheet to the document this way and running it with the bodyTextSize default value is the addition of the bodyTextSize 8pt part at the end Other XSLT processors may require a different syntax when passing a new parameter value along from the command line, but they would still create the same result when using this stylesheet and input. Local parameters are even more useful in template rules than XSLT local variables are, because the flexibility of passing one or more values to a template lets that template adapt to different situations Named templates that don t take advantage of this can still operate as functions or subroutines, but when you use named templates that do, you can start treating XSLT like a real programming language For example, the ability of named templates to call themselves with parameters makes recursion and all the power associated with it possible. How we pass a new value to a template rule s local parameter isn t quite the open question that it is with global parameters because XSLT provides the xsl with-param instruction for just this purpose You can use this element in an xsl apply-templates element to assign a new value to a parameter in a template being applied, but it s more commonly used when calling a named template with the xsl call-template instruction For example, the first template rule in the following stylesheet has a name attribute and not a match attribute Instead of the XSLT processor looking for nodes where it can apply this template, the processor will wait until the template is explicitly called with an xsl call-template instruction. The second and third template rules, which have match patterns of chapter title and section title , call the first template by its name of titles using xsl call-templates elements These xsl call-templates elements don t need any children, but they have them here xsl with-param elements to pass parameter values to the named templates The titles template rule will use these values to override the default value of h4 when it s called The with-param instruction in the chapter title template rule is saying pass along the value h1 for the headerElement parameter , and the one in the section title template rule is passing the value h2 For this input document. the titles template is called when the XSLT processor finds each of the two title element nodes The titles named template uses the passed values to create the h1 and h2 elements in the result. Just as an xsl param element can specify its defau lt value as either content between its start - and end-tags or as the value of a select attribute, the xsl with-param element can indicate the value to pass using either method The two xsl with-param elements in the example above use the two different methods to demonstrate this. The XSLT processor evaluates the xsl with-param element s select value as an expression just like it does with the xsl param element s select attribute value This is why the third template above needs single quotation marks around the value of h2 even though it s also enclosed by double quotation marks The double quotation marks serve a different purpose to tell the XML parser where the select attribute value starts and ends The inner single quotation marks tell the XSLT processor that the value is a literal string and not an expression to evaluate. Note The name value specified in the xsl call-template element cannot contain a variable reference For example, if you declared a variable called templateName and sto red the string title there, an xsl call-template start-tag of xsl call-template name templateName would not work in the previous example s chapter title or section title template rules. You don t have to specify a hardcoded string like h1 or h2 as the value of the parameter to pass in an xsl with-param element You can put the result of one or more functions in there, or even an XPath expression that retrieves a value from somewhere in the document or even from another document, using the document function This ability opens up an even broader range of possibilities for how you use parameter passing in XSLT.

No comments:

Post a Comment