Sunday 29 October 2017

Xsl Output Metod Binära Alternativ


Jag använder Apache Camel-filkomponent och xslt-komponent Jag har en rutt där jag hämtar ett xml-meddelande, omvandlar med xslt och släpper till en annan mapp. Apache kamel DSL-rutt. Jag nämner Apache-kamel också här för att kontrollera om det finns en väg för att ställa ut filnamnet med Camel Jag tror att även utan Camel skulle det finnas en mekanism med ren XSLT. Jag behöver byta namn på den transformerade utdatafilen Men jag får alltid samma filnamn med det transformerade innehållet i utmatningsmappen. eg inmatningsfilutdatafil med transformationen applied. What jag letar efter är som utdatafilenamnet. Utdatafilerna är korrekta. Jag försökte xsl result-document href men då är utmatningen xml tom. Vänligen help. Output XML när du använder xsl resultat - dokumentet href i XSLT. Output XML när du inte använder xsl result-document href i XSLT. Edit redigerade XSLT enligt MartinHonnen s comment. Running XSLT från kommandot Line. A. är tillgängligt för att tillämpa ett visst formatark till en given källa XML Dokument för simp Le-transformationer på Java-plattformen, använd kommandot. java - s källa - xsl stylesheet - o output. where källstartsark och - utmatning är källkodens XML-fil, XSLT-stilarket, B respektive utgångsfilen. För plattformen, kommandot är enkelt. Transform - source - xsl stylesheet - o output. For en schema-medveten transformation, ange alternativet - sa eller på Java-plattformen använd endast alternativa ingångspunkten. Mer information finns Schema-Aware Transformations. For bakåtkompatibilitet med tidigare utgåvor kan prefixen - s och - xsl utelämnas förutsatt att källdokumentet och stilarket är de två sista alternativen före parametrar för nyckelordvärde. Mer generellt består argumenten av ett antal alternativ som är prefixade med - och därefter valfritt för bakåtkompatibilitet källa filnamn och eller stilark filnamn, sedan ett antal parametrar som tillhandahålls som nyckelord värde par Alternativen måste komma först, då filnamnen om närvarande, då parametrarna. För att detta ska fungera Måste alla nödvändiga Java-komponenter vara tillgängliga på klassväggen. Se Installation för detaljer om hur du ställer in klassvägen. Om du inte använder några ytterligare Java-bibliotek kan du använda enklare form av kommando detta exempel är för hemversionen. java - jar dir optionsparametrar. Notera dock att detta inte fungerar om du behöver ladda användarskrivna förlängningsfunktioner eller andra klasser från klassvägen. Det fungerar därför inte om ditt stilark använder extensionsfunktioner eller andra plugin-komponenter till exempel parsers eller URI resolvers. Alternativen är som följer i vilken ordning som helst. Använd xml-stilarkens instruktionsinstruktion i källdokumentet för att identifiera stilarket som ska användas. Stilarketargumentet får inte finnas på kommandoraden. Filnamn är antingen en filnamn eller en lista med filnamn åtskilda av semikolon filerna är OASIS XML-kataloger som används för att definiera hur offentliga identifierare och systemidentifierare URI som används i ett källdokument, stilark eller schema är b E omdirigerad, typiskt för resurser som finns tillgängliga lokalt. För mer information se. Indikerar att konfigurationsinformation ska hämtas från den medföljande konfigurationsfilen. Alla alternativ som tillhandahålls på kommandoradsöverstyrningsalternativen som anges i konfigurationsfilen. Använd den angivna CollectionURIResolver för att behandla samling av URI som skickas till samlingsfunktionen CollectionURIResolver är en användardefinierad klass som implementerar gränssnittet. Sätta - dtd på förfrågningar DTD-baserad validering av källfilen och alla filer som läses med dokumentfunktionen Kräver en XML-parser som stöder validering Inställningen - dtd av Vilket är standard undertrycker DTD-validering Inställningen - dtd återställer utför DTD-validering men behandlar felet som icke-dödligt om det misslyckas Observera att en extern DTD sannolikt kommer att läsas även om den inte används för validering, eftersom DTD kan innehålla definitioner av enheter . Normalt, om validering med hjälp av en DTD eller Schema begärs, ska alla fasta eller standardvärden som definieras i DTD eller schema kommer att expanderas Specificera - expand off undertrycker detta När det gäller DTD-definierade standardvärden kan det här inte fungera med alla XML-parsers Det fungerar med Xerces-parserns standard för Java och Microsoft-parserns default för. Visa en körning planera för stilarket Det här är en representation av uttrycksträdet efter omskrivning av optimeringsprogrammet. Det komprimerar XSLT-instruktionerna och XPath-uttrycken i ett enda träd. Om inget filnamn anges, skickas utmatningen till standardfelströmen. Utmatningen är ett träd I XML-format. Om ext har angivits, undertrycka samtal på dynamiskt laddade externa Java-funktioner. Detta påverkar inte samtal på integrerade förlängningsfunktioner, inklusive Saxon och EXSLT-förlängningsfunktioner. Detta alternativ är användbart när du laddar ett otillförlitligt formatark, kanske från en avlägsen webbplats med hjälp av en webbadress säkerställer det att stilarket inte kan kalla godtyckliga Java-metoder och därigenom få privilegierad tillgång till resurser på din maskin. väljer init ial-läge för omvandlingen Om det här är namnspaced kan det skrivas som lokalnamn. Värdet är namnet på en användarlevererad klass som implementerar gränssnittet som denna initialiserare kommer att ringas under initialiseringsprocessen och kan användas för att ställa in några alternativ Krävs i konfigurationen programmatiskt Det är särskilt användbart för sådana uppgifter som att registrera förlängningsfunktioner, collationer eller externa objektmodeller, särskilt i saxon-HE, där alternativet inte existerar för att göra det via en konfigurationsfil. Väljer den ursprungliga namngivna mallen för att vara Exekverad Om det här är namnspaced kan det skrivas som lokala namn När det här alternativet används behöver du inte ange en källfil, men om du gör det måste du ange det med - s alternativet. Om du vill - l eller - l på Specificeras, får linjens och kolumnnummer att behållas för källdokument. Dessa är tillgängliga med hjälp av förlängningsfunktionerna saxonlinjenummer och saxon kolumnnummer Linjenummer är användbara när syftet med stilarket är att hitta fel eller avvikelser i käll XML-filen Utan det här alternativet finns radenummer tillgängliga medan källdokumenten analyseras och valideras, men de behålls inte i dokumentets trädrepresentation. Använd den angivna mottagaren för att bearbeta utmatningen från xsl-meddelandet Klassen måste genomföra klassen Detta gränssnitt liknar en SAX ContentHandler, det tar en ström av händelser för att generera produktionen Vanligtvis är innehållet i ett meddelande ett XML-fragment Som standard används standard XML-emitern, konfigurerad att skriva till standarden felflöde och att inte inkludera någon XML-deklaration Varje meddelande utmatas som en ny sekvens av samtal till den här mottagaren är enligt följande finns det ett enda öppet samtal vid omvandlingsstart och ett enda nära samtal i slutet och varje utvärdering av En xsl-meddelandeinstruktion startar med ett startDocument-samtal och slutar med endDocument StartDocument-händelsen har ett egenskaperargument som anger huruvida avsluta ja var angivet och l ocationId på samtal som startElement och tecken kan användas för att identifiera platsen i stilarket där meddelandedata som härrörde detta uppnås genom att skicka den medföljande platsen i ett samtal till eller till getLineNumber på samma klass för att få xsl-meddelandeutmatning anmäld till JAXP ErrorListener enligt beskrivningen i JAXP-dokumentationen. Ställer in värdet för aktuellt datumTid och implicit-tidszon för transformationen. Den är avsedd för testning, så att repeterbara resultat kan erhållas för jämförelse med referensresultat eller för att testa att stilark kan hantera Viktiga datum och tider som slutet av året bearbetning. Sänd utdata till namngiven fil I avsaknad av det här alternativet går resultaten till standardutdata Om källargumentet identifierar en katalog är det här alternativet obligatoriskt och måste också identifiera en katalog på slutförandet kommer det att innehålla en utdatafil för varje fil i källkatalogen Om stilarket skriver sekundära utdatafiler med hjälp av xsl-resultatdokumentet nt instruktion detta filnamn fungerar som bas URI för href-attributet för denna instruktion I avsaknad av det här alternativet skrivs sekundära utdatafiler i förhållande till den aktuella arbetsmappen. Filen skapas om den inte existerar finns några nödvändiga kataloger också skapad Om filen existerar, skrivs den över, även om omvandlingen misslyckas, men inte om omvandlingen inte producerar något huvudresultatträd. Ställ optimeringsnivå Värdet är ett heltal i intervallet 0 ingen optimering till 10 full optimering för närvarande alla värden andra än 0 resultera i full optimering men detta kommer sannolikt att förändras i framtiden Standard är full optimering Med den här funktionen kan optimering undertryckas i fall där kompileringstiden är viktig, eller där optimering blir i vägen för felsökning eller orsakar förlängningsfunktioner med sidoväggar. effekter för att uppträda oförutsägbart Observera dock att även om ingen utvärdering görs kan lat utvärdering fortfarande leda till att utvärderingsordern till var inte som förväntat. Använd den angivna OutputURIResolver för att bearbeta utdata-URI-skivor som visas i href-attributet för xsl-resultatdokument. The OutputURIResolver är en användardefinierad klass som implementerar gränssnittet. Normalt, om validering av resultatdokument begärs, är ett valideringsfel Dödlig Inställning av alternativet - återställning av urval orsakar att sådana valideringsfel behandlas som varningar. Valideringsmeddelandet skrivs både till standardfelströmen och där det är möjligt som en kommentar i själva resultatdokumentet. Använd PTreeURIResolver Detta alternativ är tillgängligt i Saxon - Endast PE och Sachsen-EE Den kan inte användas i kombination med alternativet - r, och den aktiverar automatiskt - u och - sa-alternativen. Effekten är tvåfaldig För det första identifieras saksiska specifika filtillägg i URIer inklusive URI källdokument på kommandoraden För närvarande är den enda saksiska specifika filtillägget som indikerar att källdokumentet levereras i form av en saxisk PTree Detta är ab inary representation av ett XML-dokument, utformat för hastighet av laddning För det andra, Saksonspecifika sökparametrar är erkända i en URI För närvarande är den enda sökparametern som är känd, val. Det kan ta värdena strikt lax eller remsa. Till exempel laddar ett dokument med strikt schema validering. With standardinställningen kommer kommandot att avsluta Java VM och returnera en exit-kod om ett fel inträffar. Detta är användbart när du kör från ett operativsystems skal. Med inställningen avstänger kommandot i stället en RunTimeException som är mer Användbar när kommandot är påkallat från en annan Java-applikation som Ant. Unvänd den angivna URIResolver för att behandla alla URI-enheter. URIResolver är en användardefinierad klass som utökar klassen, vars funktion är att ta en URI-levererad som en sträng och returnera En SAX InputSource Det är åberopat att bearbeta URI-filer som används i dokumentfunktionen, i xsl include och xsl importelementen, och om - u är också specificerat för att bearbeta URI-filerna i källfilen E och stylesheet-fil som finns på kommandoraden. Formaterar omvandlingen N gånger, där N är det angivna heltalet. Detta alternativ är användbart för prestandamätning eftersom tidpunkter för den första omvandlingen ofta domineras av Java-uppvärmningstid. Identifierar källfilen Eller katalog Obligatorisk om inte - it alternativ används Källfilen analyseras för att skapa ett träd och dokumentets nod för det här trädet fungerar som det första sammanhangsobjektet för namnet identifierar en katalog, alla filer i katalogen kommer att behandlas Individuellt I det här fallet är - O-alternativet obligatoriskt och måste också identifiera en katalog, för att innehålla motsvarande utdatafiler. En katalog måste anges som ett filnamn, inte som ett källdokument kan anges som - för att ta källan från standard Input För bakåtkompatibilitet kan källfilnamnet också anges precis innan stilarkets filnamn utan flaggan - s, förutsatt att - et alternativ inte är närvarande. Inkludera ett schema-awar e-omvandling Kräver att Saxon-EE ska installeras Dessa alternativ är inte nödvändiga om antingen ett annat alternativ som medför schema-medvetenhet förekommer till exempel - val strikt eller b innehåller stilarket en xsl-importschemadeklaration. Anger vilken blankutrymme som ska avlägsnas från källdokument gäller både huvudkildedokumentet och alla dokument som är laddade till exempel med hjälp av dokumentfunktionen. Standardnivån är förbigående. Allt äventyrat blankutrymme avlägsnas. Blanketterna för textnycklar är ignorerade om de visas i element definierade i DTD eller schema som endast med element Innehåll Anger alla remsor alla textutrymmen i textrutan från källdokumentet före ytterligare bearbetning, oavsett eventuella xsl-striputrymmedeklarationer i stilarket eller eventuella xml-rymdattribut i källdokumentet. Anger ignorerade remsor, alla otrevliga textutrymmena nodar från källdokument före några Vidare bearbetning, oavsett eventuella xsl-strip-rymddeklarationer i stilarket eller någon annan xml-rymdattribut i källdokumentet Angivande av ingen undertrycker all whitespace-strippning om det inte begärs någon annanstans, till exempel med hjälp av xsl-strip-space. Displayversion och tidsinformation till standardfelutgången. Utmatningen spårar också filerna som läses och skrivs och förlängningsmoduler som laddas. Visa spårningsinformation om spårarkiv Det här spårar utförandet av varje instruktion i stilarket så att utsignalen kan vara ganska volym. Omställer också linjanummering för källdokumentet Om ett klassnamn anges är det en användardefinierad klass som måste implementera Om klassnamnet utelämnas, är en systemlevererad spårlarmare prestandaprofilering, ange klassnamn till Detta skapar en utdatafil som ger tidpunkter för varje instruktion som utförs. Denna utdatafil kan sedan analyseras för att ge en exekveringstidsprofil för stilarket. Se Prestationsanalys . Används endast när - s-alternativet anger en katalog Kontrollerar antalet trådar som används för att bearbeta filer i katalogen Varje transformation körs i en enda tråd. Växlar på spårning av bindning av samtal till externa Java-metoder Det här är användbart när du analyserar varför Saxon inte hittar en Java-metod för att matcha ett anknytningsfunktionssamtal i stilarket eller varför det väljer en metod över en annan när flera är tillgängliga. Detta motsvarar inställningen och - trafikfilen som är det medför att spårprofilinformationen ställs in till den angivna filen. Denna utdatafil kan sedan analyseras för att ge en exekveringstidsprofil för stilarket Se Prestationsanalys. Indikerar att utsignalen från spårningsfunktionen ska riktas till en angiven fil. Alternativt, ange ut för att rikta utmatningen till fel för att skicka den till standard eller null för att den ska kasseras. Detta alternativ ignoreras när en spårlarmare Används i det fallet, spårutgången går till den registrerade spårlyttaren. Välj genomförandet av den interna trädmodellen - tree-liten väljer den lilla trädmodellen de default - tree länk väljer den länkade trädmodellen - tree tinyc väljer den kondenserade lilla trädmodellen Se Välja en trädmodell. Indikerar att namnen på källdokumentet och stilarkdokumentet är webbadresser, annars tas de som filnamn, såvida de inte börjar med eller Fil, i vilket fall de tas som URLs. Requests schema-baserad validering av källfilen och alla filer som läses med dokumentet eller liknande funktioner. Validering är endast tillgänglig med Saxon-EE, och denna flagga slår automatiskt på - sa-alternativet Ange - val eller - val strikt för att begära strikt validering, eller - val för lösenvalidering. Om versionsmängder är avstämda, undertrycka varningsvarningar Detta undertrycker varningsmeddelandet som normalt utfärdas som krävs enligt W3C-specifikationen när du kör XSLT 2 0 processor mot ett stylesheet som anger version 1 0.Indicates policyen för hantering av återställbara fel i stilarket tystmedel återhämta sig tyst, återhämta betyder återhämta sig efter att ha skrivit en varningsmeddelande till systemfejlutmatningen, dödliga medel signalerar felet och försöker inte återhämtning Obs! Detta gäller inte för alla fel som XSLT-rekommendationen beskriver som återställningsbar. Standarden är återhämtning. Använd den angivna SAX-parsern för källfilen och alla filer laddad med hjälp av dokumentfunktionen Parsern måste vara det fullt kvalificerade klassnamnet för en Java-klass som implementerar eller gränssnittet. Användningen av det här alternativet är att välja en HTML-parser som John Cowans TagSoup snarare än en XML-parser. I det här fallet TagSoup JAR-filen måste vara på klassväggen, och klassnamnet som ska användas är allmänt användande är att ange. Denna parser tillhandahålls av Apache Commons-projektet och det anpassar standardparsern med hjälp av en EntityResolver som löser externa enhetsreferenser som anger hänvisningen till En extern DTD i en DOCTYPE-deklaration med hänvisning till en OASIS katalogfil Detta kan användas för att undvika upprepade samtal till externa webbservrar som W3C-servern för vanliga Använda DTD-filer som XHTML DTD. Apply XInclude-bearbetning till alla inmatade XML-dokument, inklusive schema - och stilarkmoduler samt källdokument. Detta fungerar för närvarande endast när dokument analyseras med Xerces-parsern, vilket är standardvärdet i JDK 1 5 och senare. If - xmlversion 1 1 anges, tillåter XML 1 1 och XML Namnrymder 1 1-konstruktioner Det här alternativet måste ställas in om källdokument med XML 1 1 ska läsas eller om resultatdokument ska serialiseras som XML 1 1 Detta alternativ möjliggör också användning av XML 1 1-konstruktioner i själva stilarket. Lägger till ytterligare scheman dokumenter Deklarationerna i dessa scheman dokumenter är tillgängliga när validering av källdokument eller för användning av valideringsuttrycket. Detta alternativ kan också användas för att tillhandahålla placeringen av scheman som Importeras till stilarket, om xll-importschemadeklarationen ger målnamnrymden i schemat, men inte dess läge. Om - xsdversion 1 1 anges, tillåter XML Sc hema 1 1 konstruktioner som påståenden Detta alternativ måste ställas in om scheman dokument som använder XML Schema 1 1 ska läsas. Om det ställs in på standarden försöker schemaprocessorn att ladda schema dokument som hänvisas till i xsi schemaLocation och xsi noNamespaceSchemaLocation attributes i exempeldokument, såvida inte ett schema för angiven namnrymd eller icke-namnrymd redan är tillgänglig Om den är avstängd ignoreras dessa attribut. Anger filen som innehåller huvudmodellmodulen Obligatorisk om inte - a alternativet eller - c-alternativet används. Värdet - identifierar standardinmatningsströmmen Om - u-alternativet anges måste värdet vara en URI istället för ett filnamn. Bestämmer om en XSLT 2 0-processor eller XSLT 3 0-processor ska användas Som standard tas värdet från versionsattributet Av xsl stylesheet element. Use angiven SAX-parser för stylesheet-fil, inklusive eventuella laddade med xsl include eller xsl import. Parsern måste vara det fullt kvalificerade klassnamnet på en Jav en klass som implementerar gränssnittet eller gränssnittet. Ange en funktion som definieras i konfigurationsgränssnittet Namn på funktioner definieras i Javadoc för klass FeatureKeys Det värde som används här är delen av namnet efter det sista, till exempel --allow-extern - funktionerna Endast funktioner som accepterar en sträng eller booles kan ställas in för booleskerna, värdena true false, off av, ja nej och 1 0 är igenkänna. Synkronisera synkroniseringsfunktionen. A param tar namnet på formnamnvärdet som namnet på parametern, Och värdera parametervärdet. Dessa parametrar är tillgängliga i stilarket som normala variabler, med namnsyntaxen, förutsatt att de deklareras med hjälp av ett högsta xsl param-element. Om det inte finns någon sådan deklaration ignoreras det medföljande parametervärdet om Xsl param-elementet har ett som attribut som indikerar den önskade typen, då strängvärdet som levereras på kommandoraden är gjuten till denna typ kan detta resultera i ett fel, till exempel om ett heltal krävs och supp Lied-värdet kan inte omvandlas till ett heltal Om parametern är deklarerad med alternativet statiskt ja nytt i XSLT 3 0, levereras värdet som ett statiskt parametervärde. En parameter som föregås av ett ledande frågetecken tolkas som ett XPath-uttryck. Till exempel tid aktuell-dateTime ställer värdet för stilarkets parametertid till värdet av det aktuella datumet och tiden som ett exempel på xs dateTime medan felsökningen felaktigt anger värdet för parameterns debug till det booleska värdet false Om parametern har en nödvändig typ till exempel xsl param name p som xs date måste det tillförda värdet vara kompatibelt med den här typen i enlighet med standardreglerna för omvandling av variabla värden och funktionsargumenter Den statiska kontexten för detta XPath-uttryck inkluderar bara de standardnamnrymder som konventionellt är bundna till prefixen xs fn xsi och saxon Den statiska basen URI som används vid uppringning av doc-funktionen är den aktuella katalogen. Det dynamiska sammanhanget innehåller ingen kontextobjekt, position eller storlek, Och inga variabler. En param föregås av att ett ledande utropstecken tolkas som en utgångsparameter. Exempelvis streck Ja, förfrågningar inmatad utmatning Detta motsvarar att ange attributindelningen ja på en xsl-utdatadeklaration i stilarket En utgångsparameter som anges på kommandoraden Överstyrer en som anges i stilarket För parametrar doctype-system doctype-public och saxon next-in-chain behandlas ett nolllängdsvärde som frånvarande, det vill säga att effekten är att avbryta något värde som ställdes in i stylesheet. If du använder bash skalet, måste du fly as. A param föregås av ett ledande plustecken tolkas som ett filnamn eller en katalog. Filens innehåll analyseras som XML, och den resulterande dokumentnoden överförs till stilarket som Parametervärdet Om parametervärdet är en katalog, analyseras alla de omedelbart innehålla filerna som XML, och den resulterande sekvensen av dokumentnoder överförs som värdet för parametern F Eller exempel anger du värdet för stilarkparameterns uppslag till dokumentnodet i roten av trädet som representerar det analyserade innehållet i filen. Under de flesta operativsystem är det möjligt att tillhandahålla ett värde som innehåller mellanslag genom att bifoga det i dubbla citat, för Exempelnamn John Smith Det här är en funktion i operativsystemets skal, inte något saxiskt, så det kan inte fungera på samma sätt under alla operativsystem eller kommandoföretag. I jEdit-konsolens plugin måste det till exempel skrivas som namn John Smith. Om parameterns namn ligger i en icke-noll namnrymd, kan parametern göras ett värde med hjälp av syntaxens lokala namnvärde. Här är uri namnet URI för parameterns namn och lokalnamn är den lokala delen av namnet. Detta gäller även utgångsparametrar Du kan till exempel ange indragningsnivån till 4 med hjälp av parameterns inmatningsfält 4 I det här fallet identifieras även lexiska QNames med prefix saxon, till exempel saxonindragningsfält 4 Se även ytterligare serialiseringsparametrar. Om - a-alternativet används, utesluts namnet på stilarket. Källedokumentet måste innehålla en instruktion för bearbetning av XML-stilark innan den första elementets start-tagg måste denna bearbetningsinstruktion ha en pseudo-attribut href som identifierar relativ eller absolut webbadress för stilarket och en pseudoattributstyp vars värde är text xml-applikation xml eller text xsl Till exempel. Xml-stilarktyp xsl. It är också möjligt att referera till ett stilark som är inbäddat i källdokumentet, förutsatt att det har ett id-attribut och id-attributet deklareras i DTD som typtyp. Exempelvis. xml-stilark typ text xsl href style1 DOCTYPE BOOKLIST SYSTEM ATTLIST xsl transform id ID IMPLICERAD BOOKLIST xsl transform id style1 version 1 0 xmlns xsl xsl transform BOOKLIST. Saxon Developer Guide Non-JavaScript Version. Funktionen transformToXML har ett problem med meta innehållstypen taggen Den utmatar den som this. meta content text html charset UTF-8. som inte är korrekt X HT ML, eftersom den stängs med istället för with. A. sätt att få utmatningen korrekt är att använda istället för transformToXML först transformToDoc anf och saveHTML . domTranObj xslProcessor - transformToDoc domXmlObj domHtmlText domTranObj-saveHTML. Entities utelämnas från utgången med koden ovan Symptomen var att nbsp - som ska fungera med UTF-8-kodning - kom inte ens till XSLTProcessor, för att inte tala om det. mycket hacking Jag upptäckte de enkla fixuppsättningsalternativen till sanna i DOMDocumentet för XSL-filen Det är, ersätt lastningen av xsl-dokumentet med. php xsl new DOMDocument xsl - substituteEntities true added linje xsl - load. However, misslyckas detta när data poster har HTML-enhet referenser Vissa databas poster kan även innehålla användargenererad text libxml har pedantiska vana att kasta ett FATAL fel för någon odefinierad entitiy Solution hide enheterna så libxml ser inte dem. php funktion hideEntities data returnerar strreplace amp data. You kan bara lägga till detta i exemplet, men det är tydligare att definiera en funktion för att ladda data till en DOMDocument På så sätt behöver du inte entitetsdeklarationer i heller. php Added function for Example 1. Ladda en XML-fil och skapa en DOMDocument Hanterar godtyckliga enheter, även odefinierade funktioner, funktionen filToDOMDoc filnamn dom nya DOMDocument xmldata filegetcontents filnamn xmldata strreplace amp xmldata disguise s går IN för att laddaXML dom - substituteEntities true collapse s går ut till transformToXML dom - loadXML xmldata return dom. Jämför med exempel 1 Transformera till en sträng. Ladda XML-källorna xml fileToDOMDoc xsl fileToDOMDoc. Konfigurera transformatorns nya XSLTProcessor proc - importStyleSheet xsl. transformera xml enligt stilarket xsl echo proc - transformToXML xml omvandla data. Jag märkte en inkompatibilitet mellan libxslt php4 och transformationen genom XSLTProcessor Php5 och XSLTProcessorn verkar lägga till implicita CDATA-avsnitt-element om du har en xslt-liknande. script-typ Text javascript foo xsl värde av välj bar script. It kommer att resultera i. Åtminstone för utgångsmetod xml för att producera sträng xhtml med xslt1.That ger upphov till ett fel åtminstone i Firefox 1 5 eftersom det inte är ett giltigt javascript ser ut som den. Som CDATA-avsnittet är implicit kunde jag inte inaktivera utsignalen eller att sätta en före den. Jag försökte allt om xsl text disable-output-escaping yes. I försökte också inaktivera implicit tillägg av CDATA med Output cdata-avsnitt-element Jag trodde det skulle utesluta script-tags Det gjorde inte t. xsl text inaktivera-output-escaping ja ltscript typ text javascript gt foo xsl text xsl värde-av välj bar xsl text disable-output-escaping yes lt script gt xsl Text. Simple, men det tog mig en stund. transformToXML, om du tidigare har registrerat PHP-funktioner, försöker du verkligen att utföra dessa funktioner när de hittar dem i en pseudo-XSL-funktion i php-funktionen. Det hittar till och med statiska funktioner inom klasserna, till exempel. xsl - värdet av välj php-funktionen MyClass MyFunction, sträng attr, sträng disable-output-escaping yes. Men i denna situation försöker transformToXML inte att utföra MyClass MyFunction I stället kör den mycity myfunction I PHP, eftersom klasser och funktioner är I tror att det inte är något problem. Detta orsakar inga problem. Ett problem uppstår när du kombinerar dessa funktioner med autoload-funktionen. Så säg att jag har vilken innehåller MyFunction-definitionen. Generellt, om jag kallar MyClass MyFunction, kommer PHP att skicka MyClass till autoload och autoload Kommer att öppnas. Vad vi just sett betyder dock att transformToXML kommer att överföra myclass till autoload, inte MyClass, med konsekvensen att PHP kommer att försöka öppna vilket inte finns, inst Ead av vilket gör det på otillräckligt operativsystem, detta är inte signifikant, men på min RedHat-server är det - PHP kommer att ge en fil inte hittat fel. Den enda lösningen jag har hittat är att redigera autoload-funktionen för att leta efter klassnamn som används i mina XSL-filer och manuellt byter dem till rätt hölje. En annan lösning är självklart att använda klassiska och filnamn med små bokstäver. Det verkar som om haninemann s användning inte är korrekt och inte uppnår det avsedda resultatet. Denna metod s syfte är att ändra ett globalt xsl param-värde i XSL-stilarket - att inte ändra ett attribut för något annat element xsl param kan du i princip skapa ett stylesheet som kan anpassas från PHP externt utan att behöva manipuleras med den ursprungliga XSL-filen. Här är ett exempel på användning som kommer att fungera. Xml version 1 0 xsl stylesheet version 1 0 xsl param namn printsomething välj defaultstring xsl mall matcha mydoc p stil färg röd Skrivad parameter xsl värde-av välj utskrifter något p xsl mall xsl stylesheet. Php dom new DOMDocument xsl ny XSLTProcessor xsl - setParameter printsomething Nu har jag överskridit standardstilen realpath dom - load style xsl - importStyleSheet dom dom - loadXML mydoc mydoc. Ut xsl - transformToXML dom. vardump före, htmlentities ut ENTQUOTES utf-8, xsl - getParameter printsomething, pre. sträng 143 xml version 1 0 p stil färg röd Utskriven parameter Nu har jag överskridit standard p sträng 32 Nu har jag överskridit standardsträngen 6.Notice som för närvarande lägger till ett namnrymd kommer inte att fungera Det enda alternativet för närvarande är att ställa in det första Parameter för namespace till en tom sträng men du kan lägga till prefixet med kolon till det andra argumentet för namn för att ställa in parametern för ett namnpace-prefixat parameternamn. Exempel på hur det fungerar. xml-version 1 0 kodning utf-8 xsl-stilarkversion 1 0 xsl-utgångsmetod xml-inslag ja kodning ISO-8859-15 doktyps system - W3C DTD XHTML 1 0 Övergångs-EN-doktyp-allmän xsl-mall-matchning docs html-huvudtitel xsl-text Exempel xsl textrubrik huvudkropp xsl för varje välj block div xsl värde av välj div xsl för varje kropp html xsl mall xsl stylesheet. php dom nya DomDocument 1 0 utf-8 xsl nya XSLTProcessor xsl - setParameter block xmlns. Stil realpath dom - ladda stil xsl - importStyleSheet dom. Dom - loadXML docs block Så här ställer du in xhtml Överföringsnamnrymder bredd php block block se block docs. xsl - getParameter docs xmlns, pre. XSLTProcessor removeParameter vann t arbeta på parametrar som ställts via XSLTProcessor setParameter sträng namnrymd, array alternativ i 5 1 - De måste ställas in och tas bort en efter en. Sätta och använda variabler och parametrar. 7 februari 2001. En variabel i XSLT har mer gemensamt med en variabel i algebra än med en variabel i ett typiskt programmeringsspråk. Det sa namn som representerar 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