�ɲɾ�����ӯ�����һ��ˣ��������С���˴��ͣ�������P���ҹ��ñ˽��ά�Բ��������˸߸ԣ�������ơ��ҹ��ñ�����ά�Բ���ˡ���˳^�ӣ������ӡ� ���ͯj�ӣ��ƺ���ӣ� ? PNG ?%k25u25%fgd5n!? PNG ?%k25u25%fgd5n!? PNG ?%k25u25%fgd5n!? PNG ?%k25u25%fgd5n!PK|0]қqstylesheet.gifnu[GIF87aܒ6@@ @9 @|,`7!!@@ =@@8(86\M@9 @@x6!,6TH@ 5(AQ6@\B`j@{`7/ !\T= {@(Q56(h6@\$t7jL{/@X>`AX>*T!R/!ftG 6q@$/_w2d8@I=6e` \$@62@c|f62+@ *{` ,(7$ |`Q{` @p82@|` A@ *|` ,H*\ȰÇ#JHŋ3jȱǏ CIɓ(S\ɲ˗0cʜI͛8sɳϟ@ JѣH*]ʴӧPJJիXjʵׯ`ÊKٳhӪ]˶۷pʝKݻx˷߿  È+^̸ǐ#'L.+kh`;CZӛSG,LaFY۪s+-4ֿʮH;8a (_μO>A .B)ϗ/X zW<0|wP!&U|}ځ 栂ڄ]x*ԃ Η`o5X|h""RgX/Rg['"y%dqS !L0cInh;ZSy#)Y4v QuAn2elz]' f=ٟqDu:f>^:N 8eop6*z:iFH(Шoz5f I b'i}"djK*zXT'jv{-.8Ѭvt,Kn:)NjoFbDmkd@c^z0n[}IJJȺ;+x aX/ '{)}̆h)[X0a4sgF:4)Zzc+z4хP|q+lm{:Zo0YjLtrLsX nk_u5u┞s֍w >~ʱg۽k㟧2~O\i_v<,!ʵ>𮼧rI>hCyv{ 6+k'!V4K/i觯@qOO܁FW8-R\M%-?"w5%?8.S+ZJwmHE _Ύzaz%X5gV+SmrGUZtY`a̹xr"uO2CAe+UQX? !mQTƪSldx=@%GPϴ߰M~{{ #I ?'Ǐg5|9>LGb)p~Mf m}_&翋M w"a/tYrO}ڝ 7'07n%~5Q#{o( ,7ꣀUq(D"AHZg9h=%Y'X)HGgmx1 (qt-XY/H1bnq㒃HDv؍&o)5aFe hfжxQBREâREEk΅8U;feq3n77^CUecI?؏HlicD79(^eww8%xc&EtZ\)BW3 GyV:V|kA1M9UV&i.-g Ff745JMy*ؑH8Vrx\/%ky;RePv5XLV%g"B9zBWMSYiiiewIhjwv{w7V]`ӓhV`kl^1DPwfs!ys/B?ĕud&3i)ٴlԛ\) d4{LNk9塚Z1'{䣤vCKcQKkhDauX 3H[ؒ)&}뵅y8QIe?;-m;er:-ǾdػtҾiU8)ts{IJ{)aPgQK]۫KFS`&-E bu&'cӥY$V2;jc;W I1,3̓79 ,V^o Y)ǵEˣkyW!v>9\Yd+s3LM\nN9gY }WmhӦNLV4D]5IVkB`MԄJSݘZM;ih=8ko0 9u͒5Ǻצ*tdJ̑f U}nv=ct=د?-ڟm`ڭڧKx/د/-}j۷ƽڅ۩ՈFΛ}ܤܠJȂmlmВݶ9s `m-KW]ݵ >C Q5{5:=DJ魫,;xN.h( ~K3J],~JEIR@.sZW !s5qg]#i5B>Nޑk:cA,>33+YtI c'T͏S~f6Hź n]ۇXzMm>lkp[Xv.$zPL?>xڝ>JZ~E^o>献ښnTV過l碎"~V&GꩾGm'Fܐ4lM|/SdO^ktN ).^6~E~1^ kiW> .R<ٽ n/*>"x̾z$.g8FH ܀0NtndCOx\OrUuN(\SV0U:*/O3`j{;μd9)?c2,?`D NQF=~RH1DI-]SL#YYfN=}4N@7=fv($#p?Mr"sμp@ оN`AX>*@@V!@T/!!f@/tG 6q@$/_X>R(8ޞ@@I=e`@ !\@$@!R)c|f/!R+@ *{` ,(7$ |`Q{` @48R|` A@ *|` , H*\ȰÇ#JHŋ3jȱǏ CIɓ(S\ɲ˗0cʜI͛8sɳϟ@ JѣH*]ʴӧPJJիXjʵׯ`ÊKٳhӪ]˶۷fȝKW.ܻxY݅~LauQ ≯ct}<6pbʘ^9激;_ b1Nfګ衯=+[qĿ]uwѥ5vR޲aθ5q[n3o?>p:̳3&r Wzؿk.} /=_~qt]m7r GځH `Gho qEfN!7 k_؟b2^) #)RvydLZR9cx*_ ViE(h%`)!m$Ryg}m9p㡋)TxFژf98ɧmb)h(&)"nBduJ*8mI:D攌ʪW眣n슷2+=ߥYT.-q6KlzUZrum:Z.pZeƪG)Ս;, +®˂jv(ńnV9KNgtY!h'*>Hj-0]QϷuy+[2 ( fj`caYhӛ58smo%ܝ孳M=;^7!.UM8`'yy\yPy޹uZ^#9l.$[VtG{%l)_2O|C%_<7M~o}v[ӢYnlڳjkiTPWi*&עӨTֶ5^7NfHՍSGOW4;E]|M}KiܬvW~ʵ(.өElؚnMo\p]4e<4qx=,0ғnt_yI%x[%^q V)FIa3 Q@.gdL(wC {9±`N1s!|_l2[߶zm6$6k^:Nڏ7Dekl*ǘ!p?}9j֢qNwo2rOX.5-7.ϳ{u{6oW F֥fϞQ:O^wvRk:f^xN^xU7m/6j+<}9S{tB'=otń=ys3Ww~,x_C7|#|]2!rKބΝ:^=wp8{H?߼챿|t3ܟկn._}}vcfGgxg}~~g)~Ot~WFG}vEwdqv2f)Sscpɇ)+`fS-H=BzgrvLXebsMqo#Lu\RׅGSW\8( 8ynUA(XojcKzVXvրg8aƃ#gցxx{F~ e~8{[8cӂtxrlg!E(XhFIX?ڥG8|:PG+Ն7(HXyx_B+mȌ@sȁy؊{Ȉ$E #`ĈZݸ"3gHUPwhȍV V{XrɨEaʵfw(ψ(GtЄ]i@̤;X#|9~8jkw2KNcT'hȊcvW mdNڴGÒ0g x$yT3OMÑ?C2bT\CZ1BI %JI[BaYR p Efy~0Ӵ/y1ٖDIvji yՔɇ*YXF{h'NM80KMPl)kjoG)?W93Dp)9nZ@{9f5/_-Yrjun9ȩ%pUymٕq( piDh")Iɞ}➢L.t_ڠyY IG9mJ?79J1 ?١)ʢz9&*+y; y?5*儕Ynw<*ڤ76 '\sHHzfRZgNjgyI*aZ(JyDJlymʘAur[4SW&HV4n5JԃcSxk装fEDoʦ|~s Zb Z숩jV9Z*}8(:ȩ^Jpx ڗ h=bʡ{ʗr*NJuک,fͪ:hZ:WV v*{l]0LS<W> sΚYj+ ً  ݵLч5-'Ӻj8j<u!lD/\m) #Ֆҗ2B̜fhtо\cn=pr-k]9zs-w}Շ]:=؄tv}v(e A@ȕ̊؆Mڅ|/א_K*bjlȱMcP8F S~<ч&4R԰m_H]ܟ[o$|cʝ|ІG׏-ܛB7 Ԉ)md-wDܣ=}eN)3mx])rM3VF .OLئ6=|sgnyzF.W= ;%^t:3~!^7)/N(b),>}25„{Kέҧ'/n:R(ӓG+C^_N4nBͥғQ^R}hM- 䚝asxk>Y-[]nV蛹f]]~EbK_ywldw霎Hm>>VP~Zm'-ݟ];.l=>^~-jsΟ;㎵A6l`.N?fn_-5^]~~YM=\b;9WU45|֯V>N/޹)ONNo۴9U()@4P‚ 6d8ă,^ĘQF=~RHDRʁ Y3K5męSN8O|h2ˇ T!ŢBBdhdS?~Uk֞]Mz;fX0ǖEVZ/ʭuΝUhXr&bI"vld)_Ɯ9c+2snyj֘!U9_.۳eܽ}vhUr]o7O;4;]vչθwE4] xwwO_?eƿk>¯@ Tn@oA˷ 9 /TpB Ip40D)qD:lLBWdq[ ō{Fo\eFr;wQ# 2I%BD4%2&GLP+K+-$̯LjLDM*$N!ݤ̲E9K:ԳOAs@@a,tPEK? ltQIGtRMtRL7UL2POEtԧJ5UWN_LuZwPU5XF}UWa]3VoUYdubZ\Ng2eն[qG\ 7]׾/\u=]VG^ʥ]Aw\~w~f_楖`8'mx#ccʌ/WY4Mf1"Smg.ԘAs f9hlhu/chV8nj&깖V ƺez|߱îrm6˰Qp.ni**"; 8,i-q6h?oCݴ${ \ .)5бyR]"bpE4"2H :]4`δƆ #xW9:gd%vcAфM$B6͍ ~}$456Jn`Ieqи*Ќp'5JRm78ji(r2.JE 0 K_r V2K]BU 5f͌H䦫ɓo,Nٱs*:Y';ۉ$'=I$A\Nψ1X8%qH9{EhTΕP:ZF;.1#MzRRN$&DR$1)M٬m:-?A:/e(֊jԽtAz*S5g*9jnuUpucY֎2آjT[bت&[~JW-\k^9%5٫;%êժbX>̩dWҬ8[Y^mU['dm(D[ַTgEБ3MpuĹ~n#s9$ׅhvYD"ԼEozΖG.ʭ;_U{aE6/ "NWUL3`-WFw\x, [p'7S xQq_J^=1/TŨxyLZ:{W#ɽR2}l>ɥzp F+_mM6ΖdG9+OngcO^#T9gWc8ul1֙u3eF3A(&C чVtR4D?R؉pZ(ZQQv4F=]S$y~4S-LkZ4g読ծV(cк֑f.9qUj''YGW[˾vMbHD_,l67wHA"׃-7maMx\7 njW{߮7}L[ ڄ{"Q0AtὭύo[rZa -萻ٛx~[p~|6i@_7:IO%ҞkC9ЃŰ8`/LF\KrTWw9ӳ|WG;ob5 Nq _uԩyG{.%K{?[)xH6>9ïv궣~>c>n +?S4> = C@S@ی3,;? @? <̹L@ dAL @AD TAl AC?+BXB&'<&\248<9C!C.C, C*AC+ ? DU8;AP3Q9ҤAE@Ť2^nɣ0Y$5clwI0# aùB ~j@o\< 6pFq B%nAg9FiFq߂tBfdstB~8JͪGHGG%b"IC SҞƂ=ȃȷ›5HI+>;IFKIXI API Alphabetic Index t-u for libxslt
Action against software patentsGNOME2 LogoW3C logoRed Hat Logo
Made with Libxslt Logo

The XSLT C library for GNOME

API Alphabetic Index t-u for libxslt

Main Menu
Related links
API Indexes

A-I J-R S-a b-c d-e f-g h-i j-m n-o p-p q-s t-u v-x y-z

Letter t:

table
_xsltStylesheet
xsltEvalOneUserParam
xsltEvalUserParams
xsltGetExtInfo
xsltNormalizeCompSteps
xsltQuoteOneUserParam
tables
_xsltDocument
xsltInitCtxtKey
xsltInitCtxtKeys
tag
xsltNewLocale
target
xsltCopyNamespace
xsltCopyNamespaceList
targetted
xsltApplyStylesheetUser
temlate
xslHandleDebugger
templates
_xsltStylesheet
_xsltTemplate
_xsltTransformContext
xsltAttrTemplateValueProcessNode
xsltCleanupTemplates
xsltFindTemplate
xsltFreeAVTList
templtaes
_xsltTransformContext
templtes
_xsltTemplate
_xsltTransformContext
temporary
_xsltTransformContext
xsltFindDocument
tenth
xsltTimestamp
term
xsltCreateRVT
term:
_xsltTransformContext
xsltRegisterLocalRVT
xsltRegisterPersistRVT
xsltRegisterTmpRVT
terminated
xsltApplyStylesheet
xsltApplyStylesheetUser
xsltEvalOneUserParam
xsltEvalUserParams
xsltProfileStylesheet
xsltQuoteOneUserParam
xsltQuoteUserParams
xsltRunStylesheet
xsltRunStylesheetUser
terms
xsltParseSequenceConstructor
test
XSLT_IS_RES_TREE_FRAG
xsltRegisterTestModule
test=
XSLT_FAST_IF
tests
XSLT_FAST_IF
text
IS_XSLT_REAL_NODE
XSLT_IS_TEXT_NODE
_xsltStyleItemText
_xsltStylePreComp
_xsltStylesheet
_xsltTransformContext
xsltCopyTextString
xsltFormatNumberConversion
xsltSaveResultToString
xsltText
than
xsltSetGenericDebugFunc
xsltSetGenericErrorFunc
that
IS_XSLT_ELEM
IS_XSLT_REAL_NODE
XSLT_ITEM_COMPATIBILITY_FIELDS
XSLT_LOCALE_NONE
XSLT_RVT_FUNC_RESULT
XSLT_STRANGE
xslHandleDebugger
xsltApplyOneTemplate
xsltDocLoaderFunc
xsltExtensionInstructionResultFinalize
xsltExtensionInstructionResultRegister
xsltGetCNsProp
xsltGetNsProp
xsltGetSpecialNamespace
xsltLoadStylesheetPI
xsltNeedElemSpaceHandling
xsltParseStylesheetCallerParam
xsltSetGenericDebugFunc
xsltSetGenericErrorFunc
xsltSetTransformErrorFunc
xsltXPathGetTransformContext
them
xsltApplyOneTemplate
xsltExtensionInstructionResultFinalize
xsltNamespaceAlias
themselve
xsltDocLoaderFunc
then
xslHandleDebugger
xsltApplyAttributeSet
xsltCopyNamespace
xsltFindTemplate
xsltGetNamespace
xsltGetSpecialNamespace
xsltSetCtxtSortFunc
xsltStrxfrm
there
XSLT_LOCALE_NONE
_xsltCompilerCtxt
xsltAllocateExtraCtxt
xsltGetQNameURI
xsltGetQNameURI2
xsltGetSpecialNamespace
xsltGetXIncludeDefault
they
xsltEvalAttrValueTemplate
those
xsltEvalAttrValueTemplate
xsltFormatNumberConversion
time
_xsltTemplate
xslHandleDebugger
xsltCompileAttr
xsltDocLoaderFunc
xsltExtInitFunction
xsltExtShutdownFunction
xsltParseGlobalVariable
xsltParseStylesheetCallerParam
xsltParseStylesheetParam
xsltParseStylesheetVariable
xsltStyleExtInitFunction
xsltStyleExtShutdownFunction
time=
xsltGetProfileInformation
top-level
xsltExtModuleTopLevelLookup
xsltRegisterExtModuleTopLevel
xsltUnregisterExtModuleTopLevel
topmost
_xsltCompilerCtxt
xslDropCall
tracing
xsltDebugGetDefaultTrace
xsltDebugSetDefaultTrace
track
_xsltStylesheet
transfer
xslHandleDebugger
transform
xslHandleDebugger
xsltApplyStylesheetUser
xsltAttrListTemplateProcess
xsltCopyNamespaceList
xsltInitElemPreComp
xsltNewElemPreComp
xsltRunStylesheetUser
xsltStrxfrm
transformation-time
xsltCopyNamespaceList
xsltFindTemplate
transformations
xsltEvalUserParams
xsltQuoteUserParams
transformed
xsltLocaleStrcmp
xsltStrxfrm
transmit
xsltTransformError
transromation
xsltSetTransformErrorFunc
treated
xsltEvalOneUserParam
xsltQuoteUserParams
trees
xsltFreeRVTs
tries
xsltLoadStylesheetPI
trigger
_xsltCompilerNodeInfo
true
xsltEvalXPathPredicate
try
xsltGetSpecialNamespace
tuples
xsltApplyStylesheet
xsltApplyStylesheetUser
xsltEvalUserParams
xsltProfileStylesheet
xsltQuoteUserParams
xsltRunStylesheet
xsltRunStylesheetUser
turned
_xsltCompilerCtxt
xsltGetCNsProp
xsltGetNsProp
two
xsltLocaleStrcmp
type
XSLT_TRACE
_xsltCompilerNodeInfo
_xsltElemPreComp
_xsltStylePreComp
_xsltTransformContext
xsltNewLocale

Letter u:

ultimately
xsltGetUTF8Char
undeclare
xsltGetSpecialNamespace
undefined
UNDEFINED_DEFAULT_NS
unfortunately
_xsltStylesheet
unimplemented
XSLT_TODO
unless
xsltGetCNsProp
xsltGetNsProp
unparsed-entity-uri
xsltUnparsedEntityURIFunction
unstructured
_xsltCompilerCtxt
unsupported
xsltExtensionInstructionResultFinalize
unused
xsltDocumentComp
xsltSecurityAllow
xsltSecurityForbid
unwanted
xsltApplyStripSpaces
xsltParseTemplateContent
update
xsltGetSecurityPrefs
xsltGetUTF8Char
xsltSetSecurityPrefs
usage
XSLT_FAST_IF
use
XSLT_LOCALE_POSIX
XSLT_LOCALE_WINAPI
xsltAddKey
xsltCopyNamespaceList
xsltDocLoaderFunc
xsltEvalGlobalVariables
xsltEvalOneUserParam
xsltEvalUserParams
xsltEvalXPathStringNs
xsltFindTemplate
xsltGetCNsProp
xsltGetDefaultSecurityPrefs
xsltGetNamespace
xsltGetNsProp
xsltGetSpecialNamespace
xsltGetUTF8Char
xsltRegisterExtras
xsltRunStylesheet
xsltRunStylesheetUser
xsltSecurityAllow
xsltSecurityForbid
xsltSetCtxtSecurityPrefs
xsltSetDefaultSecurityPrefs
xsltSetSecurityPrefs
xsltSortFunc
xsltTemplateProcess
xsltTransformError
use:
_xsltStylesheet
useful
xsltXPathGetTransformContext
usefull
xsltInitElemPreComp
user
_xsltTransformContext
xsltApplyStylesheetUser
xsltRunStylesheetUser
xsltSetSecurityPrefs
user-code
xsltFreeRVTs
users!
xsltLocalVariablePush
uses
xsltFormatNumberConversion
xsltRunStylesheet
xsltRunStylesheetUser
using
xsltDoSortFunction
xsltEvalXPathPredicate
xsltEvalXPathString
xsltEvalXPathStringNs
xsltRunStylesheet
xsltRunStylesheetUser
xsltSetCtxtParseOptions

A-I J-R S-a b-c d-e f-g h-i j-m n-o p-p q-s t-u v-x y-z

Daniel Veillard

PK|0]6V(V( contexts.gifnu[GIF87a\<ܒ!6@@=@@9 @|`8!!@@ =@@ 7((6@\7M@9 @@x6 !6 IH@ 5(AF6@\@B`5j{(`6/ L,I8, {F(X\$t7j<{/@X>AX>*I!@G/!fdG 6q@_wJt@I=6e\@t6J@c|f6!J+@ *{` 7|`Q{` @8J@\|`<A@ *|`,\<H*\ȰÇ#JHŋ3jȱǏ CIɓ(S\ɲ˗0cʜI͛8sɳϟ@ JѣH*]ʴSJ իXjݚ*UUKYS'=@jWnF;-[qV]0CwkW"߳ ]|1Ⱆf ɝ̷@£5x_`M-pfѫ9mQw푸j{s,/cޢuxoЭc<޻_{%+Zq~v'Y~iUgSt1Bg VJ^yfQhasFbm(!$4QǞaWI8!" ߈Yfcc# 蟊/WZr0$9U}WP::fb8'ޕw#m.\h'HfҖuyZVn"zzsmz!^ihT¹Vy(~$ B昨$aBzO$ljrhfd%Z؂7ie*뤢yFzkz+NFnY%b:i>FJXB.i^D;+ƋxrGH>0q(%*wĝx]߀Sw'rvG.9Qa_ĸ{wΓ{.A>稧.90ݪ.I{]:׵ϮN+6.+ͨ-(7ЋN+pg}~cK=T>@wHot5O?ZsGMhmό+zL(= b4tڵ~ahY's;֜ARt $Z("|UreHLXA 5z5 s|cn"Sw/!]́ޠvFppsKƈl1*|"Y([5tp(BR!&gIdP-_\4)Jc e*U2l}L*2ҏ!|e-]FlclT9?bcf氘{teI)MҘIQ.[Hֱ Y\"Sʜr ]֒Hj9@ tR:4;:3x܏ޮ>j'xU+^vwVY{_Ӭ2>4(okݾ`I*D+`~:\;Z^׺QyKe0{\Q/ {V7N6)]Jaymv,Z"GoOd/fص2-[\KʽfD>Le!m}eOM D,OqYY(x殈qa O*#E|/Yn kln8$dq&E.rRXpE+Z5h Z g ]iGԆzٯ*U^]2>y$SPtl(WZv0lbќ9YumA}p8cjak}AkO;c5^t LQo9lrˍ i1[%Fm$:[|yNyi ǹ<9o"r[W pj<j" noo.gܠ4jYeGMXG$,uS98ϽhtPp:v/o!7C}{}KZE:F gW]OToױmZuc7Otg\[#Eg1I5}4oT).pzc11]azn>꒳uȋ} uv$ }YǺBsf~[unS.t/#`wG,;Yy 8sӀ$7Pt86~$XsX4.X<+~8We3%7Tk*}!xH'7gvt?<(LHMgESH;:8@V0ֆ[^~TӆqQ>$*iyt=m G5d֏ndwRE 4%}\{:6uH /1#1=2+B29q5J9T[ID6iF)\?6i&2ax}C)xi|Eb)4&GF*~ٚXsiw34U;wrjFRE?vwop`SW2ù*LL׀Έ*H&=*yt)U)Y$w"H#fm솜)ǜx*iAB2f5 &=ILҨk/9M:go\ן ']yzz Zf2t7l9ڗvq 3" u9%nYwV$((xi#gbȟ,Y-njtʦ yTfzsڧP֤:Xڅd*h(ET. CWsӸp7u_YIYK75u+Wj٦zi<ë{WƬpZꎹ)D ꬀ڔ)7Go{Urj p9!jJ6۶j?檎\ʩ UʪϚ\jQu^˰:3Ł2W>D͒ܕl+;kz]=M"}7$f٭ 8Bi-ެMEi߷mYgh v`. ޕwi8p[U:EF{ɮvĞ}G.y8GoyUyކ爐WGǖKsӧӽ]tip5$^3H ;\c㌚܇M>ʯGvi2Ñ4hBQ֗[bIJ˛GYϹY)Y}^H6\MÖc"^otn"wxf~w8I[Ҡ`RvFÎNN2d;\!*(WSa8"+B^7ITm2/YN-NLs%9,e.kW}iZq t}v~@, e箅-..‡>6Nƪ~ɞ^5lJ -mz$۱ UQηL&y ۥn ;K&{lb~<:m"o!+2,I3] [90O +,MiQĈ %:QcE!vF%M|8J-MtSL4mĉ&ljl0hΛ;6ȣMWu%TUZŚ5#՟@& ťZ7r 'E5jml\u{G{Xn޽}\8n=V:m̏W|7ztϞV>׺nF4;O/y7~O$~;_?_ . P&0LD@ʄ0B 'f?4D菉RJ?s8ED0 OXT@pZjGQK`ƯM +FHLr/-$rH$UA4,MsMNEҬ93,R$s,C$R-MJSU;URP.rn^%X*)7rf~So ӽim~sl8v]!2Oj 7>V!M)SB"_VD"lіT=gQI!)ʓoVcݚԨ^u<$ XZևVi)%Ƒ24aGn1;s>S|k:;>UNif?m;H45!91鎠/=3k}lZkK3r]0a_bƌG#r%~\KϵEu;zt.vMچ-< o40Jρ<ʡYnЉ2L%ʿ/zZ|if~]wpIԬ n%NaN2{@|g2-dVw=ʦ vGw\uc7ߵ5'uTwC?sŇGԂ{lܿzw-S՜[& fAsT6W}\7 EFq#{~oC___^q\s͗!}>s>[mcghW?~oӎx-r[Ak4{8+.?`<8* @0C܊@@T74ՃP@V>F>:nA~K5 [8\ Ll9e{Y[*!d,_ y!C*{I,Oc J7#b%#@oA 7k#<4D'DB;-[Ş{AMtH 4B$c1ĬPLvS6E]$B-;/%[a̖{8Q)0i|i?kFD4@ ol;cOCtk[* jĦ#.SWԚ=7ʋGtyH+8(F<@~2mt"zȱDžt"tH'Ft?Ht-G[jIt.j֪>QI.4J/ IJ=BUA6\<$1+D0D, ɝAHNʮ<֣3& Bs HD~qKJL@㲰kqERK3C<#"̷˨\,0&C*dtF3w<޴Nd7ٛƤ=u(QCe 6я4RlXP%5%%;k(RIRuMs# List of constructors for libxslt
Action against software patentsGNOME2 LogoW3C logoRed Hat Logo
Made with Libxslt Logo

The XSLT C library for GNOME

List of constructors for libxslt

Main Menu
Related links
API Indexes

Type const xmlChar *:

xsltEvalStaticAttrValueTemplate
xsltGetCNsProp
xsltGetQNameURI
xsltGetQNameURI2
xsltSplitQName

Type long:

xsltTimestamp

Type void *:

xsltExtInitFunction
xsltGetExtData
xsltStyleExtInitFunction
xsltStyleGetExtData
xsltStyleStylesheetLevelGetExtData

Type xmlAttrPtr:

xsltAttrListTemplateProcess
xsltAttrTemplateProcess

Type xmlChar *:

xsltAttrTemplateValueProcess
xsltAttrTemplateValueProcessNode
xsltEvalAVT
xsltEvalAttrValueTemplate
xsltEvalTemplateString
xsltEvalXPathString
xsltEvalXPathStringNs
xsltGetNsProp

Type xmlDocPtr:

xsltApplyStylesheet
xsltApplyStylesheetUser
xsltCreateRVT
xsltDocLoaderFunc
xsltGetProfileInformation
xsltProfileStylesheet

Type xmlHashTablePtr:

xsltGetExtInfo

Type xmlNodePtr:

xsltCopyTextString

Type xmlNodePtr *:

xsltTemplateProcess

Type xmlNodeSetPtr:

xsltGetKey

Type xmlNsPtr:

xsltCopyNamespace
xsltCopyNamespaceList
xsltGetNamespace
xsltGetPlainNamespace
xsltGetSpecialNamespace

Type xmlXPathCompExprPtr:

xsltXPathCompile
xsltXPathCompileFlags

Type xmlXPathError:

xsltFormatNumberConversion

Type xmlXPathFunction:

xsltExtModuleFunctionLookup
xsltXPathFunctionLookup

Type xmlXPathObjectPtr:

xsltVariableLookup
xsltXPathVariableLookup

Type xmlXPathObjectPtr *:

xsltComputeSortResult

Type xsltCompMatchPtr:

xsltCompilePattern

Type xsltDebugTraceCodes:

xsltDebugGetDefaultTrace

Type xsltDecimalFormatPtr:

xsltDecimalFormatGetByName
xsltDecimalFormatGetByQName

Type xsltDocumentPtr:

xsltFindDocument
xsltLoadDocument
xsltLoadStyleDocument
xsltNewDocument
xsltNewStyleDocument

Type xsltElemPreCompPtr:

xsltDocumentComp
xsltNewElemPreComp
xsltPreComputeExtModuleElement
xsltPreComputeFunction

Type xsltLocale:

xsltNewLocale

Type xsltLocaleChar *:

xsltStrxfrm

Type xsltPointerListPtr:

xsltPointerListCreate

Type xsltPreComputeFunction:

xsltExtModuleElementPreComputeLookup

Type xsltSecurityCheck:

xsltGetSecurityPrefs

Type xsltSecurityPrefsPtr:

xsltGetDefaultSecurityPrefs
xsltNewSecurityPrefs

Type xsltStackElemPtr:

xsltParseStylesheetCallerParam

Type xsltStylesheetPtr:

xsltLoadStylesheetPI
xsltNewStylesheet
xsltNextImport
xsltParseStylesheetDoc
xsltParseStylesheetFile
xsltParseStylesheetImportedDoc
xsltParseStylesheetProcess

Type xsltTemplatePtr:

xsltFindTemplate
xsltGetTemplate

Type xsltTopLevelFunction:

xsltExtModuleTopLevelLookup

Type xsltTransformContextPtr:

xsltNewTransformContext
xsltXPathGetTransformContext

Type xsltTransformFunction:

xsltExtElementLookup
xsltExtModuleElementLookup

Daniel Veillard

PK|0]J'' index.htmlnu[ libxslt
Action against software patentsGNOME2 LogoW3C logoRed Hat Logo
Made with Libxslt Logo

The XSLT C library for GNOME

libxslt

Main Menu
Related links
API Indexes

Libxslt is the XSLT C library developed for the GNOME project. XSLT itself is a an XML language to define transformation for XML. Libxslt is based on libxml2 the XML C library developed for the GNOME project. It also implements most of the EXSLT set of processor-portable extensions functions and some of Saxon's evaluate and expressions extensions.

People can either embed the library in their application or use xsltproc the command line processing tool. This library is free software and can be reused in commercial applications (see the intro)

External documents:

Logo designed by Marc Liyanage.

Daniel Veillard

PK|0]jjAPIchunk1.htmlnu[ API Alphabetic Index J-R for libxslt
Action against software patentsGNOME2 LogoW3C logoRed Hat Logo
Made with Libxslt Logo

The XSLT C library for GNOME

API Alphabetic Index J-R for libxslt

Main Menu
Related links
API Indexes

A-I J-R S-a b-c d-e f-g h-i j-m n-o p-p q-s t-u v-x y-z

Letter J:

JDK
xsltFormatNumberConversion
James
XSLT_XT_NAMESPACE

Letter K:

Kay
XSLT_SAXON_NAMESPACE
Key
_xsltStylesheet

Letter L:

LR-element
_xsltCompilerNodeInfo
LRE
xsltAttrTemplateValueProcessNode
xsltEvalAttrValueTemplate
xsltEvalStaticAttrValueTemplate
Length
xsltSaveResultToString
Libexslt
xsltGetPlainNamespace
Libxslt
xsltGetPlainNamespace
Literal
_xsltStylesheet
xsltAttrListTemplateProcess
xsltAttrTemplateProcess
xsltCopyNamespaceList
Load
xsltParseStylesheetFile
LocationPathPattern
xsltCompilePattern
Looks
xsltExtElementLookup
xsltExtModuleElementLookup
xsltExtModuleElementPreComputeLookup
xsltExtModuleFunctionLookup
xsltExtModuleTopLevelLookup
xsltGetKey
Lookup
xsltGetSecurityPrefs

Letter M:

MUST
xsltInitElemPreComp
Macro
CHECK_STOPPED
CHECK_STOPPED0
CHECK_STOPPEDE
XML_CAST_FPTR
XSLT_LOCALE_NONE
XSLT_LOCALE_POSIX
XSLT_LOCALE_WINAPI
XSLT_RUNTIME_EXTRA
XSLT_RUNTIME_EXTRA_FREE
XSLT_RUNTIME_EXTRA_LST
XSLT_STRANGE
XSLT_TODO
Marks
xsltExtensionInstructionResultRegister
Max
XSLT_MAX_SORT
May
_xsltDecimalFormat
Maybe
xsltFindTemplate
Meaning
xsltFormatNumberConversion
Memory
xsltSaveResultToString
Michael
XSLT_SAXON_NAMESPACE

Letter N:

NCName
xsltGetQNameURI
NOTE
xsltApplyOneTemplate
xsltParseStylesheetCallerParam
NOTE:
_xsltStylesheet
xsltApplyOneTemplate
xsltApplyStylesheet
xsltGetQNameURI
xsltInitCtxtKeys
xsltLocalVariablePush
xsltRunStylesheet
xsltRunStylesheetUser
Name
xsltEvalStaticAttrValueTemplate
Namespace
_xsltPrincipalStylesheetData
_xsltStylesheet
Namespaces
_xsltStylesheet
Needed
_xsltTransformContext
Not
_xsltStylesheet
xsltGetPlainNamespace
xsltInitCtxtKeys
Not-a-number
_xsltDecimalFormat
Notation:
xsltFormatNumberConversion
Note
XSLT_ITEM_COMPATIBILITY_FIELDS
xsltExtensionInstructionResultRegister
xsltGetSpecialNamespace
Number
_xsltFormatNumberInfo
_xsltStylesheet

Letter O:

ONLY
xsltInitAllDocKeys
Obsolete
_xsltTransformContext
xsltGetPlainNamespace
xsltRegisterTmpRVT
xsltTemplateProcess
One
xsltSetGenericDebugFunc
xsltSetGenericErrorFunc
Otherwise
xsltDoSortFunction
Output
_xsltStylesheet

Letter P:

POSIX
XSLT_LOCALE_POSIX
Parser
xsltDocumentFunction
xsltElementAvailableFunction
xsltFormatNumberFunction
xsltFunctionAvailableFunction
xsltFunctionNodeSet
xsltGenerateIdFunction
xsltKeyFunction
xsltSystemPropertyFunction
xsltUnparsedEntityURIFunction
Parses
xsltParseAnyXSLTElem
xsltParseGlobalVariable
xsltParseSequenceConstructor
xsltParseStylesheetProcess
Pattern
xsltCompilePattern
Per
_xsltTransformContext
Places
xsltLocalVariablePush
Pops
xsltLocalVariablePop
Pre
_xsltStylePreComp
xsltDocumentComp
Precompile
xsltCompileAttr
Precompute
xsltStylePreCompute
Precomputed
_xsltStylesheet
Precomputes
xsltPreComputeExtModuleElement
Process
xsltApplyImports
xsltAttrTemplateProcess
xsltAttrTemplateValueProcess
xsltAttrTemplateValueProcessNode
xsltAttribute
xsltComment
xsltCopyOf
xsltDebug
xsltDocumentElem
xsltElement
xsltEvalAVT
xsltEvalXPathPredicate
xsltEvalXPathString
xsltEvalXPathStringNs
xsltForEach
xsltMessage
xsltNumber
xsltProcessOneNode
xsltProcessingInstruction
xsltText
xsltValueOf
Processes
xsltApplyOneTemplate
xsltApplyTemplates
xsltAttrListTemplateProcess
xsltCallTemplate
xsltChoose
xsltEvalTemplateString
xsltIf
xsltParseStylesheetCallerParam
Profiling
_xsltTemplate
Provides
xsltGetXIncludeDefault
xsltXPathGetTransformContext
Push
xsltAddStackElemList

Letter Q:

QName
_xsltStackElem
_xsltTemplate
xsltDecimalFormatGetByQName
xsltEvalAttrValueTemplate
xsltGetQNameURI
xsltGetQNameURI2
xsltSplitQName
QNames
xsltApplyAttributeSet
xsltSplitQName
QUESTION:
xsltAttrTemplateValueProcessNode

Letter R:

REVISIT
xsltFindTemplate
REVISIT:
xsltCopyNamespaceList
RFC
xsltNewLocale
ROUTINE
xsltInitAllDocKeys
RTF
_xsltTransformContext
RVT
XSLT_RVT_FUNC_RESULT
XSLT_RVT_GLOBAL
XSLT_RVT_LOCAL
XSLT_RVT_VARIABLE
_xsltTransformContext
xsltRegisterLocalRVT
xsltReleaseRVT
RVTs
_xsltTransformContext
xsltFlagRVTs
Read
xsltGetUTF8Char
xsltNamespaceAlias
Register
xsltAddTemplate
xsltNewDocument
xsltNewStyleDocument
xsltRegisterExtModule
xsltRegisterExtModuleFull
xsltRegisterPersistRVT
Registering
XSLT_REGISTER_FUNCTION_LOOKUP
XSLT_REGISTER_VARIABLE_LOOKUP
Registers
xsltParseStylesheetParam
xsltParseStylesheetVariable
xsltRegisterAllElement
xsltRegisterAllExtras
xsltRegisterAllFunctions
xsltRegisterExtElement
xsltRegisterExtFunction
xsltRegisterExtModuleElement
xsltRegisterExtModuleFunction
xsltRegisterExtModuleTopLevel
xsltRegisterExtPrefix
xsltRegisterExtras
xsltRegisterLocalRVT
xsltRegisterTestModule
xsltRegisterTmpRVT
Resets
xsltPointerListClear
Restore
xsltRestoreDocumentNamespaces
Result
_xsltStackElem
_xsltStylesheet
_xsltTransformContext
xsltAttrListTemplateProcess
xsltAttrTemplateProcess
xsltCopyNamespaceList
xsltCreateRVT
xsltFindDocument
xsltFreeRVTs
xsltRegisterLocalRVT
xsltRegisterPersistRVT
xsltRegisterTmpRVT
xsltReleaseRVT
Retrieve
xsltGetExtData
xsltStyleGetExtData
xsltStyleStylesheetLevelGetExtData
Rule
_xsltTransformContext

A-I J-R S-a b-c d-e f-g h-i j-m n-o p-p q-s t-u v-x y-z

Daniel Veillard

PK|0]G3PoPoAPIchunk6.htmlnu[ API Alphabetic Index h-i for libxslt
Action against software patentsGNOME2 LogoW3C logoRed Hat Logo
Made with Libxslt Logo

The XSLT C library for GNOME

API Alphabetic Index h-i for libxslt

Main Menu
Related links
API Indexes

A-I J-R S-a b-c d-e f-g h-i j-m n-o p-p q-s t-u v-x y-z

Letter h:

handle
xsltSetGenericDebugFunc
xsltSetGenericErrorFunc
xsltSetLoaderFunc
handler
_xsltTransformContext
xsltNewDocument
xsltNewStyleDocument
xsltRunStylesheet
xsltRunStylesheetUser
xsltSetCtxtSortFunc
xsltSetGenericDebugFunc
xsltSetGenericErrorFunc
xsltSetSortFunc
xsltSetTransformErrorFunc
handles
xsltCopyNamespaceList
handling
_xsltElemPreComp
_xsltStylePreComp
_xsltTransformContext
xsltSetGenericDebugFunc
xsltSetGenericErrorFunc
xsltSetTransformErrorFunc
hard-wire
xsltFindTemplate
has
_xsltCompilerCtxt
_xsltStylesheet
xsltEvalStaticAttrValueTemplate
xsltExtensionInstructionResultRegister
xsltGetCNsProp
xsltGetNsProp
xsltGetQNameURI
xsltXPathCompile
xsltXPathCompileFlags
hash
_xsltStylesheet
xsltEvalOneUserParam
xsltEvalUserParams
xsltGetExtInfo
xsltNormalizeCompSteps
xsltQuoteOneUserParam
hashtable
xsltNormalizeCompSteps
have
_xsltStylesheet
xsltEvalOneUserParam
hence
xsltGetQNameURI
hold
XSLT_ITEM_NAVIGATION_FIELDS
_xsltElemPreComp
holding
_xsltNsMap
_xsltTransformContext
xsltAttrTemplateValueProcessNode
xsltEvalAttrValueTemplate
xsltEvalStaticAttrValueTemplate
xsltGetQNameURI
xsltGetQNameURI2
holds
xsltInitCtxtKey
hosting
xsltEvalAVT
how
_xsltTemplate
href
xsltGetNamespace
html
xsltFormatNumberConversion
http:
xsltFormatNumberConversion

Letter i:

identifier
xsltLocaleStrcmp
ignorable
xsltApplyStripSpaces
xsltIsBlank
xsltParseTemplateContent
implementation
xsltRegisterExtElement
xsltRegisterExtFunction
implemented
xsltRunStylesheet
xsltRunStylesheetUser
import
XSLT_GET_IMPORT_INT
XSLT_GET_IMPORT_PTR
xsltFindElemSpaceHandling
xsltFindTemplate
xsltNextImport
xsltParseStylesheetImport
imported
xsltGetTemplate
xsltNormalizeCompSteps
xsltParseStylesheetImportedDoc
imports
_xsltStylesheet
xsltCleanupTemplates
xsltParseStylesheetProcess
in-scope
XSLT_ITEM_NSINSCOPE_FIELDS
_xsltCompilerCtxt
_xsltCompilerNodeInfo
_xsltPrincipalStylesheetData
xsltEvalXPathStringNs
include
xsltParseStylesheetInclude
included
xsltSaveResultToFilename
includes
_xsltDocument
_xsltStylesheet
inclusive
xsltFormatNumberConversion
indented
_xsltStylesheet
index
nr
indicating
XSLT_LOCALE_NONE
XSLT_LOCALE_POSIX
XSLT_LOCALE_WINAPI
xsltDocLoaderFunc
indicator
xsltEvalStaticAttrValueTemplate
info
_xsltCompilerNodeInfo
xsltEvalAVT
xsltGetKey
xsltInitCtxtKeys
information
XSLT_RUNTIME_EXTRA
XSLT_RUNTIME_EXTRA_FREE
XSLT_RUNTIME_EXTRA_LST
_xsltCompilerNodeInfo
_xsltPrincipalStylesheetData
xsltAllocateExtra
xsltAllocateExtraCtxt
xsltAttribute
xsltCallTemplate
xsltChoose
xsltComment
xsltCopy
xsltCopyOf
xsltDocumentElem
xsltElement
xsltFlagRVTs
xsltForEach
xsltIf
xsltInitCtxtKey
xsltNumber
xsltParseStylesheetOutput
xsltProcessingInstruction
xsltSort
xsltText
xsltTransformFunction
xsltValueOf
informations
_xsltStylesheet
_xsltTemplate
_xsltTransformContext
xsltDebug
xsltFindElemSpaceHandling
xsltGetProfileInformation
xsltNumberFormat
xsltSaveProfiling
infos
_xsltCompilerNodeInfo
xsltFindDocument
inherited
_xsltTemplate
initial
xsltApplyOneTemplate
xsltGetQNameURI
xsltGetQNameURI2
xsltPointerListAddSize
xsltPointerListCreate
initialization
xsltExtInitFunction
xsltRegisterExtModule
xsltRegisterExtModuleFull
xsltStyleExtInitFunction
initialized
xsltInitCtxtExts
xsltInitCtxtKeys
xsltNewElemPreComp
initializes
xsltNewElemPreComp
initiate
xsltApplyOneTemplate
input
xsltApplyStripSpaces
xsltGetNamespace
xsltGetPlainNamespace
xsltInitCtxtKey
xsltInitCtxtKeys
xsltNewTransformContext
xsltTransformFunction
insertion
_xsltTransformContext
inspected
xsltExtensionInstructionResultRegister
xsltFlagRVTs
instances
xsltFormatNumberConversion
instantiated
xsltRegisterTmpRVT
instead
xsltRegisterExtras
xsltRegisterTmpRVT
instructions
XSLT_RVT_LOCAL
_xsltTemplate
xsltApplyOneTemplate
xsltParseAnyXSLTElem
integer
_xsltFormatNumberInfo
xsltFormatNumberConversion
intended
XSLT_ITEM_NAVIGATION_FIELDS
xsltApplyOneTemplate
xsltCheckExtPrefix
xsltCheckExtURI
xsltCopyNamespaceList
interest
_xsltCompilerCtxt
interface
xsltRunStylesheet
xsltRunStylesheetUser
intergers
XSLT_GET_IMPORT_INT
internal
UNDEFINED_DEFAULT_NS
XSLT_IS_RES_TREE_FRAG
XSLT_MARK_RES_TREE_FRAG
xsltCopyNamespaceList
xsltCopyTextString
xsltCreateRVT
xsltEvalGlobalVariables
xsltExtensionInstructionResultFinalize
xsltGetNamespace
xsltGetPlainNamespace
xsltLocalVariablePush
xsltParseAnyXSLTElem
xsltRegisterLocalRVT
xsltRegisterTmpRVT
internalized
_xsltStylesheet
_xsltTransformContext
internally
XSLT_STRANGE
xsltFindTemplate
interpretation
_xsltDecimalFormat
interpreter
xsltXPathGetTransformContext
interpretor
xsltXPathFunctionLookup
xsltXPathVariableLookup
into
xsltSetDebuggerCallbacks
xsltSplitQName
invoking
xsltGetSpecialNamespace
isn
xsltExtensionInstructionResultRegister
issues
_xsltTransformContext
item
_xsltEffectiveNs
_xsltElemPreComp
_xsltTransformContext
xslDropCall
xsltPointerListAddSize
item1
xsltGetProfileInformation
item2|item3
xsltGetProfileInformation
items
XSLT_ITEM_COMMON_FIELDS
xsltApplyOneTemplate
its
xsltAllocateExtra
xsltAllocateExtraCtxt
xsltApplyStylesheetUser
xsltFlagRVTs
xsltFreeGlobalVariables
xsltGetNamespace
xsltParseGlobalParam
xsltParseStylesheetParam
xsltParseStylesheetVariable
itself
xsltLoadStylesheetPI

A-I J-R S-a b-c d-e f-g h-i j-m n-o p-p q-s t-u v-x y-z

Daniel Veillard

PK|0]B&&downloads.htmlnu[ Downloads
Action against software patentsGNOME2 LogoW3C logoRed Hat Logo
Made with Libxslt Logo

The XSLT C library for GNOME

Downloads

Main Menu
Related links
API Indexes

The latest versions of libxslt can be found on the xmlsoft.org server. (NOTE that you need the libxml2, libxml2-devel, libxslt and libxslt-devel packages installed to compile applications using libxslt.) Igor Zlatkovic is now the maintainer of the Windows port, he provides binaries. CSW provides Solaris binaries, and Steve Ball provides Mac Os X binaries.

Snapshot:

Contribs:

I do accept external contributions, especially if compiling on another platform, get in touch with me to upload the package. I will keep them in the contrib directory

Libxslt is also available from GIT:

  • See libxslt Git web. To checkout a local tree use:

    git clone git://git.gnome.org/libxslt
  • The libxml2 module is also present there

Daniel Veillard

PK|0]ƿnnAPI.htmlnu[ The programming API
Action against software patentsGNOME2 LogoW3C logoRed Hat Logo
Made with Libxslt Logo

The XSLT C library for GNOME

The programming API

Main Menu
Related links
API Indexes

Okay this section is clearly incomplete. But integrating libxslt into your application should be relatively easy. First check the few steps described below, then for more detailed information, look at the generated pages for the API and the source of libxslt/xsltproc.c and the tutorial.

Basically doing an XSLT transformation can be done in a few steps:

  1. configure the parser for XSLT:

    xmlSubstituteEntitiesDefault(1);

    xmlLoadExtDtdDefaultValue = 1;

  2. parse the stylesheet with xsltParseStylesheetFile()
  3. parse the document with xmlParseFile()
  4. apply the stylesheet using xsltApplyStylesheet()
  5. save the result using xsltSaveResultToFile() if needed set xmlIndentTreeOutput to 1

Steps 2,3, and 5 will probably need to be changed depending on you processing needs and environment for example if reading/saving from/to memory, or if you want to apply XInclude processing to the stylesheet or input documents.

Daniel Veillard

PK|0]9yEXSLT/APIconstructors.htmlnu[ List of constructors for libexslt
Action against software patentsGNOME2 LogoW3C logoRed Hat Logo
Made with Libxslt Logo

The EXSLT C library for Gnome

List of constructors for libexslt

Main Menu
Related links
API Indexes

Daniel Veillard

PK|0]KKEXSLT/index.htmlnu[ libexslt
Action against software patentsGNOME2 LogoW3C logoRed Hat Logo
Made with Libxslt Logo

The EXSLT C library for Gnome

libexslt

Main Menu
Related links
API Indexes

Libexslt is the EXSLT C library developed for libxslt (a part of the Gnome project). Much of the initial work on the library was done by Thomas Broyer. EXSLT itself is a community initiative to provide extensions to XSLT.

This library is free software and can be reused in commercial applications (see the intro)

Logo designed by Marc Liyanage.

Daniel Veillard

PK|0]nnMMEXSLT/downloads.htmlnu[ Downloads
Action against software patentsGNOME2 LogoW3C logoRed Hat Logo
Made with Libxslt Logo

The EXSLT C library for Gnome

Downloads

Main Menu
Related links
API Indexes

The latest versions of libxslt can be found on xmlsoft.org (Seattle, France) or on the Gnome FTP server as a source archive, Antonin Sprinzl also provides a mirror in Austria. (NOTE that you need the libxml2, libxml2-devel, libxslt and libxslt-devel packages installed to compile applications using libxslt.) Igor Zlatkovic is now the maintainer of the Windows port, he provides binaries. Gary Pennington provides Solaris binaries. Steve Ball provides Mac Os X binaries.

Contribs:

I do accept external contributions, especially if compiling on another platform, get in touch with me to upload the package. I will keep them in the contrib directory

Libxslt is also available from CVS:

Daniel Veillard

PK|0]GN͊BBEXSLT/APIchunk0.htmlnu[ API Alphabetic Index C-u for libexslt
Action against software patentsGNOME2 LogoW3C logoRed Hat Logo
Made with Libxslt Logo

The EXSLT C library for Gnome

API Alphabetic Index C-u for libexslt

Main Menu
Related links
API Indexes

C-u

Letter C:

Common
exsltCommonRegister
Crypto
exsltCryptoRegister

Letter D:

Dates
exsltDateRegister
exsltDateXpathCtxtRegister
Dynamic
exsltDynRegister

Letter E:

EXSLT
EXSLT_COMMON_NAMESPACE
EXSLT_CRYPTO_NAMESPACE
EXSLT_DATE_NAMESPACE
EXSLT_DYNAMIC_NAMESPACE
EXSLT_FUNCTIONS_NAMESPACE
EXSLT_MATH_NAMESPACE
EXSLT_SETS_NAMESPACE
EXSLT_STRINGS_NAMESPACE
exsltCommonRegister
exsltCryptoRegister
exsltDateRegister
exsltDateXpathCtxtRegister
exsltDynRegister
exsltFuncRegister
exsltMathRegister
exsltMathXpathCtxtRegister
exsltRegisterAll
exsltSetsRegister
exsltSetsXpathCtxtRegister
exsltStrRegister
exsltStrXpathCtxtRegister

Letter F:

Functions
exsltFuncRegister

Letter M:

Math
exsltMathRegister
exsltMathXpathCtxtRegister

Letter N:

Namespace
EXSLT_COMMON_NAMESPACE
EXSLT_CRYPTO_NAMESPACE
EXSLT_DATE_NAMESPACE
EXSLT_DYNAMIC_NAMESPACE
EXSLT_FUNCTIONS_NAMESPACE
EXSLT_MATH_NAMESPACE
EXSLT_SETS_NAMESPACE
EXSLT_STRINGS_NAMESPACE
SAXON_NAMESPACE

Letter R:

Registers
exsltCommonRegister
exsltCryptoRegister
exsltDateRegister
exsltDateXpathCtxtRegister
exsltDynRegister
exsltFuncRegister
exsltMathRegister
exsltMathXpathCtxtRegister
exsltRegisterAll
exsltSaxonRegister
exsltSetsRegister
exsltSetsXpathCtxtRegister
exsltStrRegister
exsltStrXpathCtxtRegister

Letter S:

SAXON
SAXON_NAMESPACE
exsltSaxonRegister
Sets
exsltSetsRegister
exsltSetsXpathCtxtRegister
Strings
exsltStrRegister
exsltStrXpathCtxtRegister

Letter T:

Times
exsltDateRegister
exsltDateXpathCtxtRegister

Letter X:

XSLT
exsltDateXpathCtxtRegister
exsltMathXpathCtxtRegister
exsltSetsXpathCtxtRegister
exsltStrXpathCtxtRegister

Letter a:

all
exsltRegisterAll
available
exsltRegisterAll

Letter c:

common
EXSLT_COMMON_NAMESPACE
crypto
EXSLT_CRYPTO_NAMESPACE

Letter d:

date
EXSLT_DATE_NAMESPACE
dynamic
EXSLT_DYNAMIC_NAMESPACE

Letter e:

extension
EXSLT_FUNCTIONS_NAMESPACE
exsltSaxonRegister
extensions
SAXON_NAMESPACE
exsltRegisterAll

Letter f:

for
EXSLT_COMMON_NAMESPACE
EXSLT_CRYPTO_NAMESPACE
EXSLT_DATE_NAMESPACE
EXSLT_DYNAMIC_NAMESPACE
EXSLT_FUNCTIONS_NAMESPACE
EXSLT_MATH_NAMESPACE
EXSLT_SETS_NAMESPACE
EXSLT_STRINGS_NAMESPACE
SAXON_NAMESPACE
exsltDateXpathCtxtRegister
exsltMathXpathCtxtRegister
exsltSetsXpathCtxtRegister
exsltStrXpathCtxtRegister
functions
EXSLT_COMMON_NAMESPACE
EXSLT_CRYPTO_NAMESPACE
EXSLT_DATE_NAMESPACE
EXSLT_DYNAMIC_NAMESPACE
EXSLT_FUNCTIONS_NAMESPACE
EXSLT_MATH_NAMESPACE
EXSLT_SETS_NAMESPACE
EXSLT_STRINGS_NAMESPACE
SAXON_NAMESPACE

Letter m:

math
EXSLT_MATH_NAMESPACE
module
exsltCommonRegister
exsltCryptoRegister
exsltDateRegister
exsltDateXpathCtxtRegister
exsltDynRegister
exsltFuncRegister
exsltMathRegister
exsltMathXpathCtxtRegister
exsltSaxonRegister
exsltSetsRegister
exsltSetsXpathCtxtRegister
exsltStrRegister
exsltStrXpathCtxtRegister

Letter o:

outside
exsltDateXpathCtxtRegister
exsltMathXpathCtxtRegister
exsltSetsXpathCtxtRegister
exsltStrXpathCtxtRegister

Letter s:

set
EXSLT_SETS_NAMESPACE
strings
EXSLT_STRINGS_NAMESPACE

Letter u:

use
exsltDateXpathCtxtRegister
exsltMathXpathCtxtRegister
exsltSetsXpathCtxtRegister
exsltStrXpathCtxtRegister

C-u

Daniel Veillard

PK|0]Ae77EXSLT/libexslt-refs.xmlnu[ PK|0]2EXSLT/libexslt-api.xmlnu[ Namespace for EXSLT common functions Namespace for EXSLT crypto functions Namespace for EXSLT date functions Namespace for EXSLT dynamic functions Namespace for EXSLT functions extension functions Namespace for EXSLT math functions Namespace for EXSLT set functions Namespace for EXSLT strings functions Namespace for SAXON extensions functions Registers the EXSLT - Common module Registers the EXSLT - Crypto module Registers the EXSLT - Dates and Times module Registers the EXSLT - Dates and Times module for use outside XSLT Registers the EXSLT - Dynamic module Registers the EXSLT - Functions module Registers the EXSLT - Math module Registers the EXSLT - Math module for use outside XSLT Registers all available EXSLT extensions Registers the SAXON extension module Registers the EXSLT - Sets module Registers the EXSLT - Sets module for use outside XSLT Registers the EXSLT - Strings module Registers the EXSLT - Strings module for use outside XSLT PK|0]ʡEXSLT/intro.htmlnu[ Introduction
Action against software patentsGNOME2 LogoW3C logoRed Hat Logo
Made with Libxslt Logo

The EXSLT C library for Gnome

Introduction

Main Menu
Related links
API Indexes

This document describes libxslt, the XSLT C library developed for the Gnome project.

Here are some key points about libxslt:

  • Libxslt is a C implementation
  • Libxslt is based on libxml for XML parsing, tree manipulation and XPath support
  • It is written in plain C, making as few assumptions as possible, and sticking closely to ANSI C/POSIX for easy embedding. Should works on Linux/Unix/Windows.
  • This library is released under the MIT Licence
  • Though not designed primarily with performances in mind, libxslt seems to be a relatively fast processor.

Daniel Veillard

PK|0]ܽtEXSLT/APIfunctions.htmlnu[ List of function manipulating types in libexslt
Action against software patentsGNOME2 LogoW3C logoRed Hat Logo
Made with Libxslt Logo

The EXSLT C library for Gnome

List of function manipulating types in libexslt

Main Menu
Related links
API Indexes

Type const xmlChar *:

exsltDateXpathCtxtRegister
exsltMathXpathCtxtRegister
exsltSetsXpathCtxtRegister
exsltStrXpathCtxtRegister

Type xmlXPathContextPtr:

exsltDateXpathCtxtRegister
exsltMathXpathCtxtRegister
exsltSetsXpathCtxtRegister
exsltStrXpathCtxtRegister

Daniel Veillard

PK|0]$%rrEXSLT/help.htmlnu[ How to help
Action against software patentsGNOME2 LogoW3C logoRed Hat Logo
Made with Libxslt Logo

The EXSLT C library for Gnome

How to help

Main Menu
Related links
API Indexes

You can help the project in various ways, the best thing to do first is to subscribe to the mailing-list as explained before, check the archives and the Gnome bug database::

  1. provide patches when you find problems
  2. provide the diffs when you port libxslt to a new platform. They may not be integrated in all cases but help pinpointing portability problems and
  3. provide documentation fixes (either as patches to the code comments or as HTML diffs).
  4. provide new documentations pieces (translations, examples, etc ...)
  5. Check the TODO file and try to close one of the items
  6. take one of the points raised in the archive or the bug database and provide a fix. Get in touch with me before to avoid synchronization problems and check that the suggested fix will fit in nicely :-)

Daniel Veillard

PK|0]wn''EXSLT/exslt.htmlnu[ The EXSLT C library for Gnome

The EXSLT C library for Gnome

libexslt

Libexslt is the EXSLT C library developed for libxslt (a part of the Gnome project). Much of the initial work on the library was done by Thomas Broyer. EXSLT itself is a community initiative to provide extensions to XSLT.

This library is free software and can be reused in commercial applications (see the intro)

Logo designed by Marc Liyanage.

Introduction

This document describes libxslt, the XSLT C library developed for the Gnome project.

Here are some key points about libxslt:

  • Libxslt is a C implementation
  • Libxslt is based on libxml for XML parsing, tree manipulation and XPath support
  • It is written in plain C, making as few assumptions as possible, and sticking closely to ANSI C/POSIX for easy embedding. Should works on Linux/Unix/Windows.
  • This library is released under the MIT Licence
  • Though not designed primarily with performances in mind, libxslt seems to be a relatively fast processor.

Documentation

There are some on-line resources about using libxslt:

  1. Check the API documentation automatically extracted from code comments (using the program apibuild.py, developed for libxml, together with the xsl script 'newapi.xsl' and the libxslt xsltproc program).
  2. Look at the mailing-list archive.
  3. Of course since libxslt is based on libxml, it's a good idea to at least read libxml description

Reporting bugs and getting help

Well, bugs or missing features are always possible, and I will make a point of fixing them in a timely fashion. The best way to report a bug is to use the Gnome bug tracking database (make sure to use the "libxslt" module name). I look at reports there regularly and it's good to have a reminder when a bug is still open. Be sure to specify that the bug is for the package libxslt.

For small problems you can try to get help on IRC, the #xml channel on irc.gnome.org (port 6667) usually have a few person subscribed which may help (but there is no guarantee and if a real issue is raised it should go on the mailing-list for archival).

There is also a mailing-list xslt@gnome.org for libxslt, with an on-line archive. To subscribe to this list, please visit the associated Web page and follow the instructions.

Alternatively, you can just send the bug to the xslt@gnome.org list, if it's really libxslt related I will approve it.. Please do not send me mail directly especially for portability problem, it makes things really harder to track and in some cases I'm not the best person to answer a given question, ask the list instead. Do not send code, I won't debug it (but patches are really appreciated!).

Check the following too before posting:

  • use the search engine to get informations related to your problem.
  • make sure you are using a recent version, and that the problem still shows up in those
  • check the list archives to see if the problem was reported already, in this case there is probably a fix available, similarly check the registered open bugs
  • make sure you can reproduce the bug with xsltproc, a very useful thing to do is run the transformation with -v argument and redirect the standard error to a file, then search in this file for the transformation logs just preceding the possible problem
  • Please send the command showing the error as well as the input and stylesheet (as an attachment)

Then send the bug with associated informations to reproduce it to the xslt@gnome.org list; if it's really libxslt related I will approve it. Please do not send mail to me directly, it makes things really hard to track and in some cases I am not the best person to answer a given question, ask on the list.

To be really clear about support:

  • Support or help request MUST be sent to the list or on bugzilla in case of problems, so that the Question and Answers can be shared publicly. Failing to do so carries the implicit message "I want free support but I don't want to share the benefits with others" and is not welcome. I will automatically Carbon-Copy the xslt@gnome.org mailing list for any technical reply made about libxml2 or libxslt.
  • There is no garantee for support, if your question remains unanswered after a week, repost it, making sure you gave all the detail needed and the informations requested.
  • Failing to provide informations as requested or double checking first for prior feedback also carries the implicit message "the time of the library maintainers is less valuable than my time" and might not be welcome.

Of course, bugs reports with a suggested patch for fixing them will probably be processed faster.

If you're looking for help, a quick look at the list archive may actually provide the answer, I usually send source samples when answering libxslt usage questions. The auto-generated documentation is not as polished as I would like (I need to learn more about Docbook), but it's a good starting point.

How to help

You can help the project in various ways, the best thing to do first is to subscribe to the mailing-list as explained before, check the archives and the Gnome bug database::

  1. provide patches when you find problems
  2. provide the diffs when you port libxslt to a new platform. They may not be integrated in all cases but help pinpointing portability problems and
  3. provide documentation fixes (either as patches to the code comments or as HTML diffs).
  4. provide new documentations pieces (translations, examples, etc ...)
  5. Check the TODO file and try to close one of the items
  6. take one of the points raised in the archive or the bug database and provide a fix. Get in touch with me before to avoid synchronization problems and check that the suggested fix will fit in nicely :-)

Downloads

The latest versions of libxslt can be found on xmlsoft.org (Seattle, France) or on the Gnome FTP server as a source archive, Antonin Sprinzl also provides a mirror in Austria. (NOTE that you need the libxml2, libxml2-devel, libxslt and libxslt-devel packages installed to compile applications using libxslt.) Igor Zlatkovic is now the maintainer of the Windows port, he provides binaries. Gary Pennington provides Solaris binaries. Steve Ball provides Mac Os X binaries.

Contribs:

I do accept external contributions, especially if compiling on another platform, get in touch with me to upload the package. I will keep them in the contrib directory

Libxslt is also available from CVS:

Daniel Veillard

PK|0]AEXSLT/APIsymbols.htmlnu[ Alphabetic List of Symbols in libexslt
Action against software patentsGNOME2 LogoW3C logoRed Hat Logo
Made with Libxslt Logo

The EXSLT C library for Gnome

Alphabetic List of Symbols in libexslt

Main Menu
Related links
API Indexes

Letter E:

EXSLTCALL
EXSLTPUBFUN
EXSLTPUBVAR
EXSLT_COMMON_NAMESPACE
EXSLT_CRYPTO_NAMESPACE
EXSLT_DATE_NAMESPACE
EXSLT_DYNAMIC_NAMESPACE
EXSLT_FUNCTIONS_NAMESPACE
EXSLT_MATH_NAMESPACE
EXSLT_SETS_NAMESPACE
EXSLT_STRINGS_NAMESPACE

Letter L:

LIBEXSLT_PUBLIC

Letter S:

SAXON_NAMESPACE

Letter _:

_REENTRANT

Letter e:

exsltCommonRegister
exsltCryptoRegister
exsltDateRegister
exsltDateXpathCtxtRegister
exsltDynRegister
exsltFuncRegister
exsltLibexsltVersion
exsltLibraryVersion
exsltLibxmlVersion
exsltLibxsltVersion
exsltMathRegister
exsltMathXpathCtxtRegister
exsltRegisterAll
exsltSaxonRegister
exsltSetsRegister
exsltSetsXpathCtxtRegister
exsltStrRegister
exsltStrXpathCtxtRegister

Daniel Veillard

PK|0] 04$$EXSLT/bugs.htmlnu[ Reporting bugs and getting help
Action against software patentsGNOME2 LogoW3C logoRed Hat Logo
Made with Libxslt Logo

The EXSLT C library for Gnome

Reporting bugs and getting help

Main Menu
Related links
API Indexes

Well, bugs or missing features are always possible, and I will make a point of fixing them in a timely fashion. The best way to report a bug is to use the Gnome bug tracking database (make sure to use the "libxslt" module name). I look at reports there regularly and it's good to have a reminder when a bug is still open. Be sure to specify that the bug is for the package libxslt.

For small problems you can try to get help on IRC, the #xml channel on irc.gnome.org (port 6667) usually have a few person subscribed which may help (but there is no guarantee and if a real issue is raised it should go on the mailing-list for archival).

There is also a mailing-list xslt@gnome.org for libxslt, with an on-line archive. To subscribe to this list, please visit the associated Web page and follow the instructions.

Alternatively, you can just send the bug to the xslt@gnome.org list, if it's really libxslt related I will approve it.. Please do not send me mail directly especially for portability problem, it makes things really harder to track and in some cases I'm not the best person to answer a given question, ask the list instead. Do not send code, I won't debug it (but patches are really appreciated!).

Check the following too before posting:

  • use the search engine to get informations related to your problem.
  • make sure you are using a recent version, and that the problem still shows up in those
  • check the list archives to see if the problem was reported already, in this case there is probably a fix available, similarly check the registered open bugs
  • make sure you can reproduce the bug with xsltproc, a very useful thing to do is run the transformation with -v argument and redirect the standard error to a file, then search in this file for the transformation logs just preceding the possible problem
  • Please send the command showing the error as well as the input and stylesheet (as an attachment)

Then send the bug with associated informations to reproduce it to the xslt@gnome.org list; if it's really libxslt related I will approve it. Please do not send mail to me directly, it makes things really hard to track and in some cases I am not the best person to answer a given question, ask on the list.

To be really clear about support:

  • Support or help request MUST be sent to the list or on bugzilla in case of problems, so that the Question and Answers can be shared publicly. Failing to do so carries the implicit message "I want free support but I don't want to share the benefits with others" and is not welcome. I will automatically Carbon-Copy the xslt@gnome.org mailing list for any technical reply made about libxml2 or libxslt.
  • There is no garantee for support, if your question remains unanswered after a week, repost it, making sure you gave all the detail needed and the informations requested.
  • Failing to provide informations as requested or double checking first for prior feedback also carries the implicit message "the time of the library maintainers is less valuable than my time" and might not be welcome.

Of course, bugs reports with a suggested patch for fixing them will probably be processed faster.

If you're looking for help, a quick look at the list archive may actually provide the answer, I usually send source samples when answering libxslt usage questions. The auto-generated documentation is not as polished as I would like (I need to learn more about Docbook), but it's a good starting point.

Daniel Veillard

PK|0]PDZssEXSLT/html/index.htmlnu[ Reference Manual for libexslt
Action against software patentsGNOME2 LogoW3C logoRed Hat Logo
Made with Libxslt Logo

The EXSLT C library for GNOME

Reference Manual for libexslt

API Menu
Related links
API Indexes

Table of Contents

Daniel Veillard

PK|0]daa%EXSLT/html/libexslt-exsltexports.htmlnu[ Module exsltexports from libexslt
Action against software patentsGNOME2 LogoW3C logoRed Hat Logo
Made with Libxslt Logo

The EXSLT C library for GNOME

Module exsltexports from libexslt

API Menu
Related links
API Indexes

Table of Contents

#define EXSLTCALL
#define EXSLTPUBFUN
#define EXSLTPUBVAR
#define LIBEXSLT_PUBLIC
#define _REENTRANT

Description

Macro: EXSLTCALL

#define EXSLTCALL

Macro: EXSLTPUBFUN

#define EXSLTPUBFUN

Macro: EXSLTPUBVAR

#define EXSLTPUBVAR

Macro: LIBEXSLT_PUBLIC

#define LIBEXSLT_PUBLIC

Macro: _REENTRANT

#define _REENTRANT

Daniel Veillard

PK|0]PDZssEXSLT/html/libexslt-lib.htmlnu[ Reference Manual for libexslt
Action against software patentsGNOME2 LogoW3C logoRed Hat Logo
Made with Libxslt Logo

The EXSLT C library for GNOME

Reference Manual for libexslt

API Menu
Related links
API Indexes

Table of Contents

Daniel Veillard

PK|0]CZ EXSLT/html/up.pngnu[PNG  IHDRw=bKGD pHYs  ~tIME2.E#IDATx=J@Fo] !+2[Z<@/9|t$D9nnBjBRIsI:H8UPN1fcsN95M㧖ɵ 束1~pEe$I 7nrDf!;`'ykI䲤sI_]y^^I>O>?YBIENDB`PK|0]PDZssEXSLT/html/book1.htmlnu[ Reference Manual for libexslt
Action against software patentsGNOME2 LogoW3C logoRed Hat Logo
Made with Libxslt Logo

The EXSLT C library for GNOME

Reference Manual for libexslt

API Menu
Related links
API Indexes

Table of Contents

Daniel Veillard

PK|0]DEXSLT/html/left.pngnu[PNG  IHDRw=bKGD pHYs  ~tIME1&[(XIDATx!OPE*ID%~ꊯ"p'ŏ`sܖrKf hmiIz}ܯI.p\`x l?l[,Hk<#c%\AUx[S7n6rzEs1j@NL$ݤi0 5/}\EKIo͓$a0jdFbkIAh>WlC'?tk;|/t*INZ^`y4Nr]׮ J<ڐt`X1@p䀸dZ')hK $V?%]+LsgUK"w53OIENDB`PK|0]lkEXSLT/html/right.pngnu[PNG  IHDRw=bKGD pHYs  ~tIME2 I%=eIDATx!o@.'**M0$$?1~vIeEuLl&4䝠Bݛ|>$ݶoc Module exslt from libexslt
Action against software patentsGNOME2 LogoW3C logoRed Hat Logo
Made with Libxslt Logo

The EXSLT C library for GNOME

Module exslt from libexslt

API Menu
Related links
API Indexes

Table of Contents

#define EXSLT_COMMON_NAMESPACE
#define EXSLT_CRYPTO_NAMESPACE
#define EXSLT_DATE_NAMESPACE
#define EXSLT_DYNAMIC_NAMESPACE
#define EXSLT_FUNCTIONS_NAMESPACE
#define EXSLT_MATH_NAMESPACE
#define EXSLT_SETS_NAMESPACE
#define EXSLT_STRINGS_NAMESPACE
#define SAXON_NAMESPACE
void	exsltCommonRegister		(void)
void	exsltCryptoRegister		(void)
void	exsltDateRegister		(void)
int	exsltDateXpathCtxtRegister	(xmlXPathContextPtr ctxt, 
const xmlChar * prefix)
void	exsltDynRegister		(void)
void	exsltFuncRegister		(void)
void	exsltMathRegister		(void)
int	exsltMathXpathCtxtRegister	(xmlXPathContextPtr ctxt, 
const xmlChar * prefix)
void	exsltRegisterAll		(void)
void	exsltSaxonRegister		(void)
void	exsltSetsRegister		(void)
int	exsltSetsXpathCtxtRegister	(xmlXPathContextPtr ctxt, 
const xmlChar * prefix)
void	exsltStrRegister		(void)
int	exsltStrXpathCtxtRegister	(xmlXPathContextPtr ctxt, 
const xmlChar * prefix)

Description

Macro: EXSLT_COMMON_NAMESPACE

#define EXSLT_COMMON_NAMESPACE

Namespace for EXSLT common functions

Macro: EXSLT_CRYPTO_NAMESPACE

#define EXSLT_CRYPTO_NAMESPACE

Namespace for EXSLT crypto functions

Macro: EXSLT_DATE_NAMESPACE

#define EXSLT_DATE_NAMESPACE

Namespace for EXSLT date functions

Macro: EXSLT_DYNAMIC_NAMESPACE

#define EXSLT_DYNAMIC_NAMESPACE

Namespace for EXSLT dynamic functions

Macro: EXSLT_FUNCTIONS_NAMESPACE

#define EXSLT_FUNCTIONS_NAMESPACE

Namespace for EXSLT functions extension functions

Macro: EXSLT_MATH_NAMESPACE

#define EXSLT_MATH_NAMESPACE

Namespace for EXSLT math functions

Macro: EXSLT_SETS_NAMESPACE

#define EXSLT_SETS_NAMESPACE

Namespace for EXSLT set functions

Macro: EXSLT_STRINGS_NAMESPACE

#define EXSLT_STRINGS_NAMESPACE

Namespace for EXSLT strings functions

Macro: SAXON_NAMESPACE

#define SAXON_NAMESPACE

Namespace for SAXON extensions functions

Function: exsltCommonRegister

void	exsltCommonRegister		(void)

Registers the EXSLT - Common module

Function: exsltCryptoRegister

void	exsltCryptoRegister		(void)

Registers the EXSLT - Crypto module

Function: exsltDateRegister

void	exsltDateRegister		(void)

Registers the EXSLT - Dates and Times module

Function: exsltDateXpathCtxtRegister

int	exsltDateXpathCtxtRegister	(xmlXPathContextPtr ctxt, 
const xmlChar * prefix)

Registers the EXSLT - Dates and Times module for use outside XSLT

ctxt:
prefix:
Returns:

Function: exsltDynRegister

void	exsltDynRegister		(void)

Registers the EXSLT - Dynamic module

Function: exsltFuncRegister

void	exsltFuncRegister		(void)

Registers the EXSLT - Functions module

Function: exsltMathRegister

void	exsltMathRegister		(void)

Registers the EXSLT - Math module

Function: exsltMathXpathCtxtRegister

int	exsltMathXpathCtxtRegister	(xmlXPathContextPtr ctxt, 
const xmlChar * prefix)

Registers the EXSLT - Math module for use outside XSLT

ctxt:
prefix:
Returns:

Function: exsltRegisterAll

void	exsltRegisterAll		(void)

Registers all available EXSLT extensions

Function: exsltSaxonRegister

void	exsltSaxonRegister		(void)

Registers the SAXON extension module

Function: exsltSetsRegister

void	exsltSetsRegister		(void)

Registers the EXSLT - Sets module

Function: exsltSetsXpathCtxtRegister

int	exsltSetsXpathCtxtRegister	(xmlXPathContextPtr ctxt, 
const xmlChar * prefix)

Registers the EXSLT - Sets module for use outside XSLT

ctxt:
prefix:
Returns:

Function: exsltStrRegister

void	exsltStrRegister		(void)

Registers the EXSLT - Strings module

Function: exsltStrXpathCtxtRegister

int	exsltStrXpathCtxtRegister	(xmlXPathContextPtr ctxt, 
const xmlChar * prefix)

Registers the EXSLT - Strings module for use outside XSLT

ctxt:
prefix:
Returns:

Daniel Veillard

PK|0]|EXSLT/html/home.pngnu[PNG  IHDRw=bKGD pHYs  ~tIME1KvIDATxՕkq?rCp ~CnpCAAJ .B-\'G]:ܠC -(8 Ԁ!fDғklbRoyxwpðIJ<of_-@RHf֟t^ښ$Q|pgv;X^^&s(bwwZF9&3඙ ^IRZUE.0Z]]U PYM8HGIekqqҀ! $۬3n e{-/seeeÌXOͷ$8==USQRR'9-s+B^ Cەs+%<7W :2IENDB`PK|0]9EXSLT/APIfiles.htmlnu[ List of Symbols per Module for libexslt
Action against software patentsGNOME2 LogoW3C logoRed Hat Logo
Made with Libxslt Logo

The EXSLT C library for Gnome

List of Symbols per Module for libexslt

Main Menu
Related links
API Indexes

Module exslt:

EXSLT_COMMON_NAMESPACE
EXSLT_CRYPTO_NAMESPACE
EXSLT_DATE_NAMESPACE
EXSLT_DYNAMIC_NAMESPACE
EXSLT_FUNCTIONS_NAMESPACE
EXSLT_MATH_NAMESPACE
EXSLT_SETS_NAMESPACE
EXSLT_STRINGS_NAMESPACE
SAXON_NAMESPACE
exsltCommonRegister
exsltCryptoRegister
exsltDateRegister
exsltDateXpathCtxtRegister
exsltDynRegister
exsltFuncRegister
exsltLibexsltVersion
exsltLibraryVersion
exsltLibxmlVersion
exsltLibxsltVersion
exsltMathRegister
exsltMathXpathCtxtRegister
exsltRegisterAll
exsltSaxonRegister
exsltSetsRegister
exsltSetsXpathCtxtRegister
exsltStrRegister
exsltStrXpathCtxtRegister

Module exsltexports:

EXSLTCALL
EXSLTPUBFUN
EXSLTPUBVAR
LIBEXSLT_PUBLIC
_REENTRANT

Daniel Veillard

PK|0]ʿEXSLT/docs.htmlnu[ Documentation
Action against software patentsGNOME2 LogoW3C logoRed Hat Logo
Made with Libxslt Logo

The EXSLT C library for Gnome

Documentation

Main Menu
Related links
API Indexes

There are some on-line resources about using libxslt:

  1. Check the API documentation automatically extracted from code comments (using the program apibuild.py, developed for libxml, together with the xsl script 'newapi.xsl' and the libxslt xsltproc program).
  2. Look at the mailing-list archive.
  3. Of course since libxslt is based on libxml, it's a good idea to at least read libxml description

Daniel Veillard

PK|0]֜@\w\wAPIchunk9.htmlnu[ API Alphabetic Index p-p for libxslt
Action against software patentsGNOME2 LogoW3C logoRed Hat Logo
Made with Libxslt Logo

The XSLT C library for GNOME

API Alphabetic Index p-p for libxslt

Main Menu
Related links
API Indexes

A-I J-R S-a b-c d-e f-g h-i j-m n-o p-p q-s t-u v-x y-z

Letter p:

param
_xsltCompilerCtxt
xsltParseGlobalParam
xsltParseStylesheetParam
parameter
xsltEvalOneUserParam
xsltEvalUserParams
xsltParseStylesheetProcess
xsltQuoteOneUserParam
parameters
_xsltStylesheet
xsltApplyOneTemplate
xsltApplyStylesheet
xsltApplyStylesheetUser
xsltEvalGlobalVariables
xsltEvalOneUserParam
xsltEvalUserParams
xsltProcessOneNode
xsltProfileStylesheet
xsltQuoteOneUserParam
xsltQuoteUserParams
xsltRunStylesheet
xsltRunStylesheetUser
xsltTransformError
params
_xsltCompilerCtxt
_xsltTransformContext
parent
xsltGetNamespace
xsltParseStylesheetImportedDoc
parse
xsltParseGlobalParam
xsltParseStylesheetAttributeSet
xsltParseStylesheetDoc
xsltParseStylesheetFile
xsltParseStylesheetImport
xsltParseStylesheetImportedDoc
xsltParseStylesheetInclude
xsltParseStylesheetOutput
xsltParseTemplateContent
parsed
_xsltDocument
_xsltStylesheet
xsltApplyStylesheet
xsltApplyStylesheetUser
xsltEvalUserParams
xsltFindDocument
xsltNewDocument
xsltNewStyleDocument
xsltNewTransformContext
xsltParseSequenceConstructor
xsltParseStylesheetDoc
xsltParseStylesheetImportedDoc
xsltParseStylesheetProcess
xsltProfileStylesheet
xsltQuoteUserParams
xsltRunStylesheet
xsltRunStylesheetUser
parser
xsltFreeTransformContext
xsltSetCtxtParseOptions
parsing
_xsltCompilerCtxt
xsltDocLoaderFunc
xsltParseStylesheetDoc
xsltSetGenericDebugFunc
xsltSetGenericErrorFunc
part
XSLT_REFACTORED_VARS
XSLT_RVT_FUNC_RESULT
XSLT_RVT_GLOBAL
XSLT_RVT_VARIABLE
_xsltElemPreComp
_xsltFormatNumberInfo
_xsltStackElem
_xsltTemplate
xsltDecimalFormatGetByQName
xsltTransformFunction
parts
xsltFlagRVTs
pass
XSLT_PARSE_OPTIONS
xsltAttrTemplateValueProcessNode
xsltEvalXPathStringNs
xsltXPathCompileFlags
passed
xsltProcessOneNode
xsltSetCtxtParseOptions
xsltSetGenericDebugFunc
xsltSetGenericErrorFunc
path
xsltSecurityCheck
pattern
XSLT_PAT_NO_PRIORITY
_xsltDecimalFormat
_xsltFormatNumberInfo
xsltAddTemplate
xsltCompilePattern
xsltFormatNumberConversion
xsltTestCompMatchList
patterns
xsltTestCompMatchList
per
_xsltFormatNumberInfo
_xsltTransformContext
xsltFormatNumberConversion
percent
_xsltFormatNumberInfo
percentage
xsltFormatNumberConversion
permille
_xsltFormatNumberInfo
persistance
_xsltTransformContext
persistant
_xsltTransformContext
persistent
_xsltStackElem
pertaining
xsltXPathGetTransformContext
pertains
IS_XSLT_ELEM
place
xsltFormatNumberConversion
xsltGetQNameURI
placeholder
xsltFormatNumberConversion
plug
xsltSetDebuggerCallbacks
point
_xsltFormatNumberInfo
xsltXPathFunctionLookup
xsltXPathVariableLookup
pointers
XSLT_GET_IMPORT_PTR
points
xsltSetDebuggerCallbacks
pops
xsltApplyOneTemplate
position
xsltPointerListAddSize
xsltTransformError
possible
xsltFormatNumberConversion
possibly
xsltCheckExtPrefix
xsltCheckExtURI
pre-computation
xsltExtModuleElementPreComputeLookup
xsltRegisterExtModuleElement
pre-processing
_xsltDocument
_xsltStylesheet
precedence
xsltFindElemSpaceHandling
xsltFindTemplate
xsltNextImport
precision
XSLT_TIMESTAMP_TICS_PER_SEC
precompiled
_xsltStyleItemApplyTemplates
_xsltStyleItemIf
_xsltStyleItemSort
_xsltStyleItemValueOf
_xsltStylePreComp
_xsltStylesheet
xsltCompilePattern
xsltDocumentComp
xsltTestCompMatchList
precomputed
_xsltStylesheet
xsltAttribute
xsltComment
xsltCopyOf
xsltDebug
xsltDocumentElem
xsltElement
xsltFreeStylePreComps
xsltInitElemPreComp
xsltNumber
xsltPreComputeExtModuleElement
xsltProcessingInstruction
xsltSort
xsltText
xsltValueOf
predicate
xsltEvalXPathPredicate
preference
xsltFreeSecurityPrefs
xsltGetDefaultSecurityPrefs
xsltNewSecurityPrefs
xsltSetCtxtSecurityPrefs
xsltSetDefaultSecurityPrefs
preferences
_xsltTransformContext
prefix
_xsltFormatNumberInfo
_xsltStylesheet
xsltCheckExtPrefix
xsltCheckExtURI
xsltFormatNumberConversion
xsltGetNamespace
xsltGetQNameURI
xsltGetQNameURI2
xsltGetSpecialNamespace
xsltRegisterExtPrefix
xsltSplitQName
prefixed
xsltGetQNameURI
xsltGetQNameURI2
prefixes
_xsltStylesheet
preliminary
xsltCheckWrite
present
xsltEvalStaticAttrValueTemplate
xsltGetExtData
xsltStyleGetExtData
xsltStyleStylesheetLevelGetExtData
preserve
_xsltStylesheet
xsltGetSpecialNamespace
preserve-space
_xsltStylesheet
xsltFindElemSpaceHandling
previous
xsltSetCtxtParseOptions
prevompiled
xsltEvalAVT
principal
_xsltStylesheet
printed
xslAddCall
priority
XSLT_PAT_NO_PRIORITY
_xsltTemplate
xsltGetSpecialNamespace
problem
XSLT_STRANGE
processed
_xsltCompilerNodeInfo
_xsltTransformContext
xslAddCall
xslHandleDebugger
xsltGetTemplate
xsltPrintErrorContext
xsltSetXIncludeDefault
processing
CHECK_STOPPED
CHECK_STOPPED0
CHECK_STOPPEDE
_xsltCompilerCtxt
_xsltFormatNumberInfo
_xsltStylesheet
xsltDebug
xsltDocumentElem
xsltGetProfileInformation
xsltGetXIncludeDefault
xsltMessage
xsltParseStylesheetImportedDoc
xsltSetXIncludeDefault
processing-instruction
_xsltStylesheet
xsltProcessingInstruction
processor
XSLT_DEFAULT_URL
XSLT_DEFAULT_VENDOR
XSLT_SAXON_NAMESPACE
XSLT_XALAN_NAMESPACE
XSLT_XT_NAMESPACE
xsltInit
xsltUninit
produce
xsltRegisterTmpRVT
products
xsltFormatNumberConversion
profile
_xsltTransformContext
xsltApplyStylesheetUser
xsltGetProfileInformation
xsltRunStylesheetUser
profiled
_xsltTransformContext
profiling
XSLT_TIMESTAMP_TICS_PER_SEC
xsltGetProfileInformation
xsltProfileStylesheet
xsltSaveProfiling
xsltTimestamp
progressive
xsltRunStylesheet
xsltRunStylesheetUser
project
XSLT_XALAN_NAMESPACE
properties
xsltAttrListTemplateProcess
provide
xsltApplyOneTemplate
xsltApplyStylesheetUser
provided
xsltApplyStylesheetUser
xsltComputeSortResult
xsltDefaultSortFunction
xsltDoSortFunction
xsltDocLoaderFunc
xsltRunStylesheetUser
xsltSecurityCheck
public?
xsltAttrTemplateValueProcessNode
purpose
XSLT_REGISTER_FUNCTION_LOOKUP
XSLT_REGISTER_VARIABLE_LOOKUP
pushed
xsltLocalVariablePush
pushes
xsltApplyOneTemplate

A-I J-R S-a b-c d-e f-g h-i j-m n-o p-p q-s t-u v-x y-z

Daniel Veillard

PK|0]< Libxslt-Logo-90x34.gifnu[GIF89aZ"KML==<KSSUURyyv::8[[Z%&%mmiqrnuxu]^\``^ klgU\[aa`情ABAvwt@@@؍..-qtr^cbZ`_774SXV552z{y<<:FFE{|z~}kpo}~||}znrq~򋍉QQNttq**)DDAafeũ887溻fjhjjhimkſlmlqrq\\Z(('HHFv{y egervtY^]inlchg ΎҦ;;:cdaCC@NPN@@>221352??> W]\OXXddbþWXV'+*BFC ;>=?FH\`` ywt6:71;;pppډ,,,//.CJM,20ԅѾ !,Z" 4(Z*\ȰÇ#XdB@'aǏ CIɓ7,D@NʜI zKĦϟ@O2QSQXʴe&biC\Δ s GhEV4f i‡)NPx@P$ox _hġ6LDxSހ>ވ4EP 3dk#\bsA;+l )*l.y#kB(_3C-gG-G.)(!U!]2U!xA Mp ^+!C[ ahG:F Jlʄ!c]G6D|L0=(1$kX1G,8#$#2(s@ ǎX|c(:1Gju L)+jDr.@;K㌅tqA75<'xPC8P<KX})_J0BF}z3$ : +a+gP#@r6ufUKct8pp`+H` qhbdR$ZT Mp! ab  a xQGXD6A A   GSr -RɯL,JK:dbE(A !qJ"P Њt`ûXL(^"C|@t,)Ŵq`ƨr Eaƪ)psB9%L1Eα!Pq!#D2 g!; "|8;bo`etr@;AD Xzf!/ @0X:{$CzE97qآ Zز%bЀJ0(1!U!t (@2Sի&!bIϠRX` o`A h-z"+@LSAPta}@j臈j-G߬zˊ >Oϊ,@PPp`% j+u@u F)`  ]@.`.b՘e7aG8g0֪=8!/n;_c<fV (^H"vQ ?88 pU!P ga}0o`шHXD.p[ XX![HDk@10 `bE\&[p7L86 y8(- H; 0b/# pHP #v̳xgN,*K = ڃb(itKڙ"¾ŧd%-APқoD*";PK|0]pjojolibxslt-refs.xmlnu[ PK|0](٥mmAPIchunk0.htmlnu[ API Alphabetic Index A-I for libxslt
Action against software patentsGNOME2 LogoW3C logoRed Hat Logo
Made with Libxslt Logo

The XSLT C library for GNOME

API Alphabetic Index A-I for libxslt

Main Menu
Related links
API Indexes

A-I J-R S-a b-c d-e f-g h-i j-m n-o p-p q-s t-u v-x y-z

Letter A:

API
XSLT_ITEM_COMPATIBILITY_FIELDS
xsltCopyTextString
xsltCreateRVT
xsltDocLoaderFunc
xsltExtensionInstructionResultFinalize
xsltGetNamespace
xsltGetPlainNamespace
xsltGetUTF8Char
xsltParseAnyXSLTElem
xsltRegisterLocalRVT
xsltRegisterTmpRVT
ATTENTION:
_xsltStylesheet
AVT
xsltAttrTemplateValueProcessNode
xsltEvalAVT
xsltEvalAttrValueTemplate
xsltEvalStaticAttrValueTemplate
xsltFreeAVTList
Add
xslAddCall
Adds
xsltCopyTextString
xsltPointerListAddSize
Allocate
xsltAllocateExtra
xsltAllocateExtraCtxt
Apache
XSLT_XALAN_NAMESPACE
Apply
xsltApplyAttributeSet
xsltApplyStylesheet
xsltApplyStylesheetUser
xsltProfileStylesheet
xsltRunStylesheet
xsltRunStylesheetUser
Attribute
_xsltStylesheet
xsltAttrListTemplateProcess
xsltAttrTemplateProcess

Letter B:

BIG
xsltApplyOneTemplate

Letter C:

CDTATA
xsltFindElemSpaceHandling
Called
xsltApplyOneTemplate
xsltAttrListTemplateProcess
xsltAttrTemplateValueProcessNode
xsltCheckExtPrefix
xsltCheckExtURI
xsltCopyNamespaceList
xsltGetNamespace
xsltParseStylesheetProcess
xsltRegisterExtPrefix
xsltStyleGetExtData
Change
_xsltStyleBasicExpressionItem
_xsltStylesheet
xsltSetCtxtParseOptions
Char
xsltGetUTF8Char
Characters:
xsltFormatNumberConversion
Check
IS_XSLT_REAL_NODE
_xsltStyleItemDocument
xsltCheckExtPrefix
xsltCheckExtURI
xsltCheckRead
xsltCheckWrite
xsltEvalStaticAttrValueTemplate
xsltFindTemplate
xsltInitAllDocKeys
xsltIsBlank
Checks
IS_XSLT_ELEM
IS_XSLT_NAME
xsltNeedElemSpaceHandling
Clark
XSLT_XT_NAMESPACE
Clean-up
xsltParseTemplateContent
Cleanup
xsltCleanupTemplates
xsltFreeLocales
Common
XSLT_ITEM_COMMON_FIELDS
Compares
xsltLocaleStrcmp
Compilation
_xsltStylesheet
Compile
xsltCompilePattern
xsltXPathCompile
xsltXPathCompileFlags
Computes
xsltGetKey
xsltInitCtxtKey
xsltInitCtxtKeys
Context
_xsltTransformContext
Control
XSLT_TRACE
Convert
xsltNumberFormat
Copies
xsltAttrListTemplateProcess
xsltCopyNamespace
Create
xsltNewSecurityPrefs
xsltNewStylesheet
xsltNewTransformContext
Creates
xsltCreateRVT
xsltNewElemPreComp
xsltNewLocale
xsltPointerListCreate
Current
_xsltCompilerCtxt
_xsltTransformContext
Currently
XSLT_ITEM_NAVIGATION_FIELDS

Letter D:

DTD
xsltGetCNsProp
xsltGetNsProp
Deallocates
xsltElemPreCompDeallocator
Debugging
_xsltTransformContext
DecimalFormat
xsltFormatNumberConversion
Display
xsltPrintErrorContext
xsltTransformError
Don
xsltAttrListTemplateProcess
xsltTemplateProcess
Drop
xslDropCall
Dumps
xsltDebugDumpExtensions

Letter E:

EXSLT
xsltDocumentElem
xsltExtensionInstructionResultFinalize
Each
xsltEvalUserParams
Either
xsltReleaseRVT
Element
_xsltStylesheet
xsltAttrListTemplateProcess
xsltAttrTemplateProcess
Elements
xsltCopyNamespaceList
Eliminate
_xsltStylesheet
Errors
xsltGetQNameURI
Evaluate
XSLT_ITEM_COMPATIBILITY_FIELDS
xsltEvalAttrValueTemplate
xsltEvalUserParams
Evaluates
xsltAttrTemplateProcess
xsltEvalGlobalVariables
Exaclty
xsltGetPlainNamespace
Execute
xsltCopy
Extensions
_xsltStylesheet
_xsltTransformContext

Letter F:

FILE
xsltApplyStylesheetUser
xsltDebugDumpExtensions
xsltProfileStylesheet
xsltRunStylesheetUser
xsltSaveProfiling
xsltSaveResultToFile
xsltSetGenericDebugFunc
xsltSetGenericErrorFunc
FIXED
xsltGetCNsProp
xsltGetNsProp
Fields
XSLT_ITEM_COMPATIBILITY_FIELDS
Finalizes
xsltExtensionInstructionResultFinalize
Find
xsltDecimalFormatGetByName
xsltDecimalFormatGetByQName
xsltFindElemSpaceHandling
xsltGetNamespace
xsltGetSpecialNamespace
xsltNextImport
Finds
xsltFindTemplate
xsltGetTemplate
Flag
_xsltFormatNumberInfo
For
_xsltStylesheet
xsltEvalGlobalVariables
xsltEvalOneUserParam
Forwards-compatible
_xsltStylesheet
Fragment
_xsltTransformContext
xsltCreateRVT
xsltRegisterLocalRVT
xsltRegisterPersistRVT
xsltRegisterTmpRVT
xsltReleaseRVT
Fragments
_xsltStackElem
xsltFindDocument
xsltFreeRVTs
Free
xsltFreeAVTList
xsltFreeAttributeSetsHashes
xsltFreeCompMatchList
xsltFreeCtxtExts
xsltFreeDocumentKeys
xsltFreeDocuments
xsltFreeExts
xsltFreeGlobalVariables
xsltFreeKeys
xsltFreeNamespaceAliasHashes
xsltFreeSecurityPrefs
xsltFreeStackElemList
xsltFreeStylePreComps
xsltFreeStylesheet
xsltFreeTemplateHashes
xsltFreeTransformContext
Frees
xsltFreeLocale
xsltFreeRVTs
xsltFreeStyleDocuments
xsltPointerListFree
Function
xsltGetUTF8Char
xsltSecurityAllow
xsltSecurityForbid
xsltSetCtxtSortFunc
xsltSetGenericDebugFunc
xsltSetGenericErrorFunc
xsltSetSortFunc
xsltSetTransformErrorFunc

Letter G:

General
_xsltStylesheet
Get
xsltDebugGetDefaultTrace
xsltGetDebuggerStatus
xsltGetDefaultSecurityPrefs
Global
_xsltPrincipalStylesheetData
_xsltStylesheet
_xsltTransformContext

Letter I:

INTERNAL
xsltInitAllDocKeys
IObuf
xsltRunStylesheet
xsltRunStylesheetUser
ISO
XML_CAST_FPTR
Implement
xsltDocumentFunction
xsltElementAvailableFunction
xsltFormatNumberFunction
xsltFunctionAvailableFunction
xsltFunctionNodeSet
xsltGenerateIdFunction
xsltKeyFunction
xsltSystemPropertyFunction
xsltUnparsedEntityURIFunction
Indicates
_xsltEffectiveNs
Indicator
_xsltCompilerCtxt
Initialize
xsltInitCtxtExts
xsltInitGlobals
Initializes
xsltInit
xsltInitElemPreComp
Internal
XSLT_FAST_IF
XSLT_REFACTORED_KEYCOMP
XSLT_REFACTORED_VARS
XSLT_REFACTORED_XPATHCOMP
xsltFreeRVTs

A-I J-R S-a b-c d-e f-g h-i j-m n-o p-p q-s t-u v-x y-z

Daniel Veillard

PK|0]J0%% xsltproc.htmlnu[xsltproc

Name

xsltproc — command line xslt processor

Synopsis

xsltproc [[-V] | [-v] | [-o file] | [--timing] | [--repeat] | [--debug] | [--novalid] | [--noout] | [--maxdepth val] | [--html] | [--param name value] | [--stringparam name value] | [--nonet] | [--path paths] | [--load-trace] | [--catalogs] | [--xinclude] | [--profile] | [--dumpextensions] | [--nowrite] | [--nomkdir] | [--writesubtree] | [--nodtdattr]] [stylesheet] [file1] [file2] [....]

Introduction

xsltproc is a command line tool for applying XSLT stylesheets to XML documents. It is part of libxslt, the XSLT C library for GNOME. While it was developed as part of the GNOME project, it can operate independently of the GNOME desktop.

xsltproc is invoked from the command line with the name of the stylesheet to be used followed by the name of the file or files to which the stylesheet is to be applied. It will use the standard input if a filename provided is - .

If a stylesheet is included in an XML document with a Stylesheet Processing Instruction, no stylesheet need be named at the command line. xsltproc will automatically detect the included stylesheet and use it.

By default, output is to stdout. You can specify a file for output using the -o option.

Command Line Options

-V or --version
Show the version of libxml and libxslt used.
-v or --verbose
Output each step taken by xsltproc in processing the stylesheet and the document.
-o or --output file
Direct output to the file named file. For multiple outputs, also known as "chunking", -o directory/ directs the output files to a specified directory. The directory must already exist.
--timing
Display the time used for parsing the stylesheet, parsing the document and applying the stylesheet and saving the result. Displayed in milliseconds.
--repeat
Run the transformation 20 times. Used for timing tests.
--debug
Output an XML tree of the transformed document for debugging purposes.
--novalid
Skip loading the document's DTD.
--noout
Do not output the result.
--maxdepth value
Adjust the maximum depth of the template stack before libxslt concludes it is in an infinite loop. The default is 500.
--html
The input document is an HTML file.
--param name value
Pass a parameter of name name and value value to the stylesheet. You may pass multiple name/value pairs up to a maximum of 32. If the value being passed is a string rather than a node identifier, use --stringparam instead.
--stringparam name value
Pass a paramenter of name name and value value where value is a string rather than a node identifier. (Note: The string must be utf-8.)
--nonet
Do not use the Internet to fetch DTD's, entities or documents.
--path paths
Use the list (separated by space or column) of filesystem paths specified by paths to load DTDs, entities or documents.
--load-trace
Display to stderr all the documents loaded during the processing.
--catalogs
Use the SGML catalog specified in SGML_CATALOG_FILES to resolve the location of external entities. By default, xsltproc looks for the catalog specified in XML_CATALOG_FILES. If that is not specified, it uses /etc/xml/catalog.
--xinclude
Process the input document using the Xinclude specification. More details on this can be found in the Xinclude specification: http://www.w3.org/TR/xinclude/
--profile or --norman
Output profiling information detailing the amount of time spent in each part of the stylesheet. This is useful in optimizing stylesheet performance.
--dumpextensions
Dumps the list of all registered extensions on stdout.
--nowrite
Refuses to write to any file or resource.
--nomkdir
Refuses to create directories.
--writesubtree path
Allow file write only within the path subtree.
--nodtdattr
Do not apply default attributes from the document's DTD.

Return values

xsltproc's return codes provide information that can be used when calling it from scripts.

0: normal

1: no argument

2: too many parameters

3: unknown option

4: failed to parse the stylesheet

5: error in the stylesheet

6: error in one of the documents

7: unsupported xsl:output method

8: string parameter contains both quote and double-quotes

9: internal processing error

10: processing was stopped by a terminating message

11: could not write the result to the output file

More Information

libxml web page: http://www.xmlsoft.org/

W3C XSLT page: http://www.w3.org/TR/xslt

PK|0]Ae77libexslt-refs.xmlnu[ PK|0]Üeeimages/callouts/9.pngnu[PNG  IHDR s;bKGD#2IDATx!0 GFVbJ,WX ^YkTb++#{?/Yٗy/j!Rj+~ E#y@!s.gEOr /P8bCtEXtSoftware@(#)ImageMagick 4.2.8 99/08/01 cristy@mystic.es.dupont.com!*tEXtSignature34623e5e4d48310e409b280afe24760214$tEXtPage12x12+0+0m}IENDB`PK|0]miiimages/callouts/10.pngnu[PNG  IHDR s;bKGD#2IDATx%!C#H,N^ [¶p\%${;/yI@l\\ySM}i㎋suȌaX̠ eڭvGj!=dR;?ݢCb kCtEXtSoftware@(#)ImageMagick 4.2.8 99/08/01 cristy@mystic.es.dupont.com!*tEXtSignature386e83bb9bdfba3227f58bb897e2c8a5+ tEXtPage12x12+0+0m}IENDB`PK|0]ҜxFeeimages/callouts/8.pngnu[PNG  IHDR s;bKGD#2IDATx0  v¬a` 544T ?ݻ/TܗW[Б!Dغ[`T3(fpgc31ؿ.0>_ +U99FbCtEXtSoftware@(#)ImageMagick 4.2.8 99/08/01 cristy@mystic.es.dupont.com!*tEXtSignature57be19505c03f92f3847f535e9b114e94kCtEXtPage12x12+0+0m}IENDB`PK|0]ny^^images/callouts/3.pngnu[PNG  IHDR s;bKGD#2xIDATx%N@ 4^0+ F``a+&U qXҠq K ]pq˟3&=ۿ-#S:bmR&jQ5cLCtEXtSoftware@(#)ImageMagick 4.2.8 99/08/01 cristy@mystic.es.dupont.com!*tEXtSignature80bbda2726ddace8ab8a01f59de2ebdbutEXtPage12x12+0+0m}IENDB`PK|0]IIimages/callouts/1.pngnu[PNG  IHDR s;bKGD#2cIDATxU 0.)Bft6#dH('XW 9cAM-!d>0(*?/c}֮5uƌ:x,TCtEXtSoftware@(#)ImageMagick 4.2.8 99/08/01 cristy@mystic.es.dupont.com!*tEXtSignature58a072e070da22f6135cbd3e414546f9hj!tEXtPage12x12+0+0m}IENDB`PK|0]x3pnYYimages/callouts/4.pngnu[PNG  IHDR s;bKGD#2sIDATx!0C#XdeeP"\o+{%leʰ!b$ci1 q dCwCmJV$6huTj~<_²|㣴 KF6[CtEXtSoftware@(#)ImageMagick 4.2.8 99/08/01 cristy@mystic.es.dupont.com!*tEXtSignature9f82fcac9e039cbdb72380a4591324f5vtEXtPage12x12+0+0m}IENDB`PK|0]\\images/callouts/5.pngnu[PNG  IHDR s;bKGD#2vIDATx0  ~+_BhIlgvMZmmwb$|Sq$^%)%YP3]2Qj%|#[7/B_CtEXtSoftware@(#)ImageMagick 4.2.8 99/08/01 cristy@mystic.es.dupont.com!*tEXtSignaturefe690463379eb25e562fcc8cc9b3c7e0߲9tEXtPage12x12+0+0m}IENDB`PK|0]G(ccimages/callouts/6.pngnu[PNG  IHDR s;bKGD#2}IDATx!0    FaPXXj' nn󩺵 oPHl\BuNح!i`d'נ,˖eԸgNLL< V?s8 YCtEXtSoftware@(#)ImageMagick 4.2.8 99/08/01 cristy@mystic.es.dupont.com!*tEXtSignatured25d7176d67a038afc1c56558e3dfb1atEXtPage12x12+0+0m}IENDB`PK|0]}XXimages/callouts/7.pngnu[PNG  IHDR s;bKGD#2rIDATx%0 OV"Y!LO Hd+H퇓e _pDlC0T+ʫ+ VAjݓ{O9lsLGIz>61GVSCtEXtSoftware@(#)ImageMagick 4.2.8 99/08/01 cristy@mystic.es.dupont.com!*tEXtSignature298368142ac43cebd2586d8d1137c8df&9tEXtPage12x12+0+0m}IENDB`PK|0] aaimages/callouts/2.pngnu[PNG  IHDR s;bKGD#2{IDATx0 D?44,5, ]+fK UG{ukS@cBSChS{2y4Cms^% D+OJ)}:T5`/CtEXtSoftware@(#)ImageMagick 4.2.8 99/08/01 cristy@mystic.es.dupont.com!*tEXtSignature80eae529c94a7f47deccfada28acb9dfo tEXtPage12x12+0+0m}IENDB`PK|0]2libexslt-api.xmlnu[ Namespace for EXSLT common functions Namespace for EXSLT crypto functions Namespace for EXSLT date functions Namespace for EXSLT dynamic functions Namespace for EXSLT functions extension functions Namespace for EXSLT math functions Namespace for EXSLT set functions Namespace for EXSLT strings functions Namespace for SAXON extensions functions Registers the EXSLT - Common module Registers the EXSLT - Crypto module Registers the EXSLT - Dates and Times module Registers the EXSLT - Dates and Times module for use outside XSLT Registers the EXSLT - Dynamic module Registers the EXSLT - Functions module Registers the EXSLT - Math module Registers the EXSLT - Math module for use outside XSLT Registers all available EXSLT extensions Registers the SAXON extension module Registers the EXSLT - Sets module Registers the EXSLT - Sets module for use outside XSLT Registers the EXSLT - Strings module Registers the EXSLT - Strings module for use outside XSLT PK|0] gnome2.pngnu[PNG  IHDR00WbKGD pHYs  ~tIME. VLgIDATx͚Ipu_ `Q$J"!1X"UL**r9c䐳ʮT%S*JYJLES,DHm003-9>吸Y#ؼ^u[\,pf \=R uQJpBwBv|'^ l˲B 1h4JkRĒJF)`/J{Z)\)i5[efnpwn. ` ~16:}x䑝rRpM?m4F`ic<gC ry C~?cb=wB״oR| TRR*DѠP(0:>F> =}OVi13B};vS任QZ'x0bfs0FG:+^sW/i `}8u ;cdYGť%:gg\OfCfֶ-`tlBu)-nQZ|ru9l4~ʭR2ư KX>P(V*y,ˢX,0001[i~+0뢵#ܺu+P>׍+̠fE2,R+_7}[B'mсֿA/,/-Nb㻩V*HEm5FW"J?.7:6jfRlBȶmttd3x.2 ԘMٜ ҥpev=l6]eY#h(ժ]qYYYfnnQffn`qDJRm CìSml uQ|5DUHe``Nflt fuT*fzz9}uJkeրf}c*R:\SZmRu###XBG^&'ŵ/xꩧC… ?j[4ZM̉/י<8~3,.>]j*ғ֛<bVK%PAcm:50"̀ 0==Қ 084 WZezΟgnJ)% lcǎGRV^C)%”m\I_ ~"ƽ~fggk餒,sܸqF:rr!eQ(x景qX.j2- #DÉ'fii>{7qv> RJQTPk_ QO$E5W40iBԳ(qYy.^PڤTfj0 K/>TZ##{$%i5xowܽ{M6T+RZ~osGu=$d1"2:ͣ4QRr\c^#`63?˗^g26'Ocuu5UyWaImY =mF[6eܹ H)g< /pZ9O řR2ʍ1h[cKh%p]Ip˲صkӧvQ*2\A+TX\sl` !{ˎGJJ_ ?Ɖ/"JS RXxc0Ak m Cӯ3>>Zy )-j=(" %cZQokS+p^KeDZf'5id2I^yX]]E*:븮G.ׁutDHiS`$6Mett'ssèo~^lllV+Wq%*J+L&wbPȲBcqر,,,O?$8?U7?O?9F#A$(PcUi (߹ &g~['<I'kNr&Rr5Z-ǿ_IjR#ϳc@p +Md2SKLOHkke޽=Gk͙3bH)v J['ёU*ma4ZT'lE!A* mlˏHooOyOh6gFo>o.KI_O>y۶SjjT:84!㺴h $N-)dKD[Lȱ|>+LL׿>BJhCMr RT*@*VIֈ"R@2cq++ IGZlGGP* *R0-`ikf~O>P,Б`j._FS۶X[+z@^;Hò,HO8-z4/HaT:Y{pPVWVH.)\+r-ZC~ j Fvk.ס;OF\fiq\a Nyc \ǡ+EryQC}Azf3`@~(6 FƱ,e!"3{c O?$Matt'V&CwѱQ<)smϳΝ;훠\P,T*KkxkCiyjtqx)2L[e zuPJf۶q] ;C٤;'Py>mRrYgh+?f1VV)*x8 `hx={'Ƕ8'sj8eK6QG6sJk\ǡ\*< (|e ~ҕ"6ުOWd}l|%h@>37@4 t%W (K_;m/sBK zj`iIENDB`PK|0]f contribs.htmlnu[ Contributions
Action against software patentsGNOME2 LogoW3C logoRed Hat Logo
Made with Libxslt Logo

The XSLT C library for GNOME

Contributions

Main Menu
Related links
API Indexes

Daniel Veillard

PK|0]W*=ppinternals.htmlnu[ Library internals
Action against software patentsGNOME2 LogoW3C logoRed Hat Logo
Made with Libxslt Logo

The XSLT C library for GNOME

Library internals

Main Menu
Related links
API Indexes

Table of contents

Introduction

This document describes the processing of libxslt, the XSLT C library developed for the GNOME project.

Note: this documentation is by definition incomplete and I am not good at spelling, grammar, so patches and suggestions are really welcome.

Basics

XSLT is a transformation language. It takes an input document and a stylesheet document and generates an output document:

the XSLT processing model

Libxslt is written in C. It relies on libxml, the XML C library for GNOME, for the following operations:

  • parsing files
  • building the in-memory DOM structure associated with the documents handled
  • the XPath implementation
  • serializing back the result document to XML and HTML. (Text is handled directly.)

Keep it simple stupid

Libxslt is not very specialized. It is built under the assumption that all nodes from the source and output document can fit in the virtual memory of the system. There is a big trade-off there. It is fine for reasonably sized documents but may not be suitable for large sets of data. The gain is that it can be used in a relatively versatile way. The input or output may never be serialized, but the size of documents it can handle are limited by the size of the memory available.

More specialized memory handling approaches are possible, like building the input tree from a serialization progressively as it is consumed, factoring repetitive patterns, or even on-the-fly generation of the output as the input is parsed but it is possible only for a limited subset of the stylesheets. In general the implementation of libxslt follows the following pattern:

  • KISS (keep it simple stupid)
  • when there is a clear bottleneck optimize on top of this simple framework and refine only as much as is needed to reach the expected result

The result is not that bad, clearly one can do a better job but more specialized too. Most optimization like building the tree on-demand would need serious changes to the libxml XPath framework. An easy step would be to serialize the output directly (or call a set of SAX-like output handler to keep this a flexible interface) and hence avoid the memory consumption of the result.

The libxml nodes

DOM-like trees, as used and generated by libxml and libxslt, are relatively complex. Most node types follow the given structure except a few variations depending on the node type:

description of a libxml node

Nodes carry a name and the node type indicates the kind of node it represents, the most common ones are:

  • document nodes
  • element nodes
  • text nodes

For the XSLT processing, entity nodes should not be generated (i.e. they should be replaced by their content). Most nodes also contains the following "navigation" information:

  • the containing document
  • the parent node
  • the first children node
  • the last children node
  • the previous sibling
  • the following sibling (next)

Elements nodes carries the list of attributes in the properties, an attribute itself holds the navigation pointers and the children list (the attribute value is not represented as a simple string to allow usage of entities references).

The ns points to the namespace declaration for the namespace associated to the node, nsDef is the linked list of namespace declaration present on element nodes.

Most nodes also carry an _private pointer which can be used by the application to hold specific data on this node.

The XSLT processing steps

There are a few steps which are clearly decoupled at the interface level:

  1. parse the stylesheet and generate a DOM tree
  2. take the stylesheet tree and build a compiled version of it (the compilation phase)
  3. take the input and generate a DOM tree
  4. process the stylesheet against the input tree and generate an output tree
  5. serialize the output tree

A few things should be noted here:

  • the steps 1/ 3/ and 5/ are optional: the DOM representing the stylesheet and input can be created by other means, not just by parsing serialized XML documents, and similarly the result tree DOM can be made available to other processeswithout being serialized.
  • the stylesheet obtained at 2/ can be reused by multiple processing 4/ (and this should also work in threaded programs)
  • the tree provided in 2/ should never be freed using xmlFreeDoc, but by freeing the stylesheet.
  • the input tree created in step 3/ is not modified except the _private field which may be used for labelling keys if used by the stylesheet. It's not modified at all in step 4/ to allow parallel processing using a shared precompiled stylesheet.

The XSLT stylesheet compilation

This is the second step described. It takes a stylesheet tree, and "compiles" it. This associates to each node a structure stored in the _private field and containing information computed in the stylesheet:

a compiled XSLT stylesheet

One xsltStylesheet structure is generated per document parsed for the stylesheet. XSLT documents allow includes and imports of other documents, imports are stored in the imports list (hence keeping the tree hierarchy of includes which is very important for a proper XSLT processing model) and includes are stored in the doclist list. An imported stylesheet has a parent link to allow browsing of the tree.

The DOM tree associated to the document is stored in doc. It is preprocessed to remove ignorable empty nodes and all the nodes in the XSLT namespace are subject to precomputing. This usually consist of extracting all the context information from the context tree (attributes, namespaces, XPath expressions), and storing them in an xsltStylePreComp structure associated to the _private field of the node.

A couple of notable exceptions to this are XSLT template nodes (more on this later) and attribute value templates. If they are actually templates, the value cannot be computed at compilation time. (Some preprocessing could be done like isolation and preparsing of the XPath subexpressions but it's not done, yet.)

The xsltStylePreComp structure also allows storing of the precompiled form of an XPath expression that can be associated to an XSLT element (more on this later).

The XSLT template compilation

A proper handling of templates lookup is one of the keys of fast XSLT processing. (Given a node in the source document this is the process of finding which templates should be applied to this node.) Libxslt follows the hint suggested in the 5.2 Patterns section of the XSLT Recommendation, i.e. it doesn't evaluate it as an XPath expression but tokenizes it and compiles it as a set of rules to be evaluated on a candidate node. There usually is an indication of the node name in the last step of this evaluation and this is used as a key check for the match. As a result libxslt builds a relatively more complex set of structures for the templates:

The templates related structure

Let's describe a bit more closely what is built. First the xsltStylesheet structure holds a pointer to the template hash table. All the XSLT patterns compiled in this stylesheet are indexed by the value of the the target element (or attribute, pi ...) name, so when a element or an attribute "foo" needs to be processed the lookup is done using the name as a key.

Each of the patterns is compiled into an xsltCompMatch (i.e. an ''XSLT compiled match') structure. It holds the set of rules based on the tokenization of the pattern stored in reverse order (matching is easier this way).

The xsltCompMatch are then stored in the hash table, the clash list is itself sorted by priority of the template to implement "naturally" the XSLT priority rules.

Associated to the compiled pattern is the xsltTemplate itself containing the information required for the processing of the pattern including, of course, a pointer to the list of elements used for building the pattern result.

Last but not least a number of patterns do not fit in the hash table because they are not associated to a name, this is the case for patterns applying to the root, any element, any attributes, text nodes, pi nodes, keys etc. Those are stored independently in the stylesheet structure as separate linked lists of xsltCompMatch.

The processing itself

The processing is defined by the XSLT specification (the basis of the algorithm is explained in the Introduction section). Basically it works by taking the root of the input document as the cureent node and applying the following algorithm:

  1. Finding the template applying to current node. This is a lookup in the template hash table, walking the hash list until the node satisfies all the steps of the pattern, then checking the appropriate global template(s) (i.e. templates applying to a node type) to see if there isn't a higher priority rule to apply
  2. If there is no template, apply the default rule (recurse on the children as the current node)
  3. else walk the content list of the selected templates, for each of them:
    • if the node is in the XSLT namespace then the node has a _private field pointing to the preprocessed values, jump to the specific code
    • if the node is in an extension namespace, look up the associated behavior
    • otherwise copy the node.

    The closure is usually done through the XSLT apply-templatesconstruct, which invokes this process recursively starting at step 1, to find the appropriate template for the nodes selected by the 'select' attribute of the apply-templates instruction (default: the children of the node currently being processed)

Note that large parts of the input tree may not be processed by a given stylesheet and that conversely some may be processed multiple times. (This often is the case when a Table of Contents is built).

The module transform.c is the one implementing most of this logic. xsltApplyStylesheet() is the entry point, it allocates an xsltTransformContext containing the following:

  • a pointer to the stylesheet being processed
  • a stack of templates
  • a stack of variables and parameters
  • an XPath context
  • the template mode
  • current document
  • current input node
  • current selected node list
  • the current insertion points in the output document
  • a couple of hash tables for extension elements and functions

Then a new document gets allocated (HTML or XML depending on the type of output), the user parameters and global variables and parameters are evaluated. Then xsltProcessOneNode() which implements the 1-2-3 algorithm is called on the docuemnt node of the input. Step 1/ is implemented by calling xsltGetTemplate(), step 2/ is implemented by xsltDefaultProcessOneNode() and step 3/ is implemented by xsltApplyOneTemplate().

XPath expression compilation

The XPath support is actually implemented in the libxml module (where it is reused by the XPointer implementation). XPath is a relatively classic expression language. The only uncommon feature is that it is working on XML trees and hence has specific syntax and types to handle them.

XPath expressions are compiled using xmlXPathCompile(). It will take an expression string in input and generate a structure containing the parsed expression tree, for example the expression:

/doc/chapter[title='Introduction']

will be compiled as

Compiled Expression : 10 elements
  SORT
    COLLECT  'child' 'name' 'node' chapter
      COLLECT  'child' 'name' 'node' doc
        ROOT
      PREDICATE
        SORT
          EQUAL =
            COLLECT  'child' 'name' 'node' title
              NODE
            ELEM Object is a string : Introduction
              COLLECT  'child' 'name' 'node' title
                NODE

This can be tested using the testXPath command (in the libxml codebase) using the --tree option.

Again, the KISS approach is used. No optimization is done. This could be an interesting thing to add. Michael Kay describes a lot of possible and interesting optimizations done in Saxon which would be possible at this level. I'm unsure they would provide much gain since the expressions tends to be relatively simple in general and stylesheets are still hand generated. Optimizations at the interpretation sounds likely to be more efficient.

XPath interpretation

The interpreter is implemented by xmlXPathCompiledEval() which is the front-end to xmlXPathCompOpEval() the function implementing the evaluation of the expression tree. This evaluation follows the KISS approach again. It's recursive and calls xmlXPathNodeCollectAndTest() to collect a set of nodes when evaluating a COLLECT node.

An evaluation is done within the framework of an XPath context stored in an xmlXPathContext structure, in the framework of a transformation the context is maintained within the XSLT context. Its content follows the requirements from the XPath specification:

  • the current document
  • the current node
  • a hash table of defined variables (but not used by XSLT, which uses its own stack frame for variables, described below)
  • a hash table of defined functions
  • the proximity position (the place of the node in the current node list)
  • the context size (the size of the current node list)
  • the array of namespace declarations in scope (there also is a namespace hash table but it is not used in the XSLT transformation).

For the purpose of XSLT an extra pointer has been added allowing to retrieve the XSLT transformation context. When an XPath evaluation is about to be performed, an XPath parser context is allocated containing an XPath object stack (this is actually an XPath evaluation context, this is a relic of the time where there was no separate parsing and evaluation phase in the XPath implementation). Here is an overview of the set of contexts associated to an XPath evaluation within an XSLT transformation:

The set of contexts associated

Clearly this is a bit too complex and confusing and should be refactored at the next set of binary incompatible releases of libxml. For example the xmlXPathCtxt has a lot of unused parts and should probably be merged with xmlXPathParserCtxt.

Description of XPath Objects

An XPath expression manipulates XPath objects. XPath defines the default types boolean, numbers, strings and node sets. XSLT adds the result tree fragment type which is basically an unmodifiable node set.

Implementation-wise, libxml follows again a KISS approach, the xmlXPathObject is a structure containing a type description and the various possibilities. (Using an enum could have gained some bytes.) In the case of node sets (or result tree fragments), it points to a separate xmlNodeSet object which contains the list of pointers to the document nodes:

An Node set object pointing to

The XPath API (and its 'internal' part) includes a number of functions to create, copy, compare, convert or free XPath objects.

XPath functions

All the XPath functions available to the interpreter are registered in the function hash table linked from the XPath context. They all share the same signature:

void xmlXPathFunc (xmlXPathParserContextPtr ctxt, int nargs);

The first argument is the XPath interpretation context, holding the interpretation stack. The second argument defines the number of objects passed on the stack for the function to consume (last argument is on top of the stack).

Basically an XPath function does the following:

  • check nargs for proper handling of errors or functions with variable numbers of parameters
  • pop the parameters from the stack using obj = valuePop(ctxt);
  • do the function specific computation
  • push the result parameter on the stack using valuePush(ctxt, res);
  • free up the input parameters with xmlXPathFreeObject(obj);
  • return

Sometime the work can be done directly by modifying in-situ the top object on the stack ctxt->value.

The XSLT variables stack frame

Not to be confused with XPath object stack, this stack holds the XSLT variables and parameters as they are defined through the recursive calls of call-template, apply-templates and default templates. This is used to define the scope of variables being called.

This part seems to be one needing most work , first it is done in a very inefficient way since the location of the variables and parameters within the stylesheet tree is still done at run time (it really should be done statically at compile time), and I am still unsure that my understanding of the template variables and parameter scope is actually right.

This part of the documentation is still to be written once this part of the code will be stable. TODO

Extension support

There is a separate document explaining how the extension support works.

Further reading

Michael Kay wrote a really interesting article on Saxon internals and the work he did on performance issues. I wish I had read it before starting libxslt design (I would probably have avoided a few mistakes and progressed faster). A lot of the ideas in his papers should be implemented or at least tried in libxslt.

The libxml documentation, especially the I/O interfaces and the memory management.

TODOs

redesign the XSLT stack frame handling. Far too much work is done at execution time. Similarly for the attribute value templates handling, at least the embedded subexpressions ought to be precompiled.

Allow output to be saved to a SAX like output (this notion of SAX like API for output should be added directly to libxml).

Implement and test some of the optimization explained by Michael Kay especially:

  • static slot allocation on the stack frame
  • specific boolean interpretation of an XPath expression
  • some of the sorting optimization
  • Lazy evaluation of location path. (this may require more changes but sounds really interesting. XT does this too.)
  • Optimization of an expression tree (This could be done as a completely independent module.)

Error reporting, there is a lot of case where the XSLT specification specify that a given construct is an error are not checked adequately by libxslt. Basically one should do a complete pass on the XSLT spec again and add all tests to the stylesheet compilation. Using the DTD provided in the appendix and making direct checks using the libxml validation API sounds a good idea too (though one should take care of not raising errors for elements/attributes in different namespaces).

Double check all the places where the stylesheet compiled form might be modified at run time (extra removal of blanks nodes, hint on the xsltCompMatch).

Thanks:

Thanks to Michael Sperberg-McQueen for various fixes and clarifications on this document!

Daniel Veillard

PK|0]\APIchunk12.htmlnu[ API Alphabetic Index v-x for libxslt
Action against software patentsGNOME2 LogoW3C logoRed Hat Logo
Made with Libxslt Logo

The XSLT C library for GNOME

API Alphabetic Index v-x for libxslt

Main Menu
Related links
API Indexes

A-I J-R S-a b-c d-e f-g h-i j-m n-o p-p q-s t-u v-x y-z

Letter v:

validates
xsltParseAnyXSLTElem
validating
xsltSetGenericDebugFunc
xsltSetGenericErrorFunc
value-of
_xsltStyleItemApplyTemplates
_xsltStyleItemSort
_xsltStylePreComp
xsltValueOf
value-returning
xsltExtensionInstructionResultFinalize
xsltExtensionInstructionResultRegister
values
_xsltStylePreComp
xsltApplyStylesheet
xsltApplyStylesheetUser
xsltGetCNsProp
xsltGetNsProp
xsltInitCtxtKey
xsltLocalVariablePop
xsltProfileStylesheet
xsltQuoteUserParams
xsltRunStylesheet
xsltRunStylesheetUser
variables
_xsltCompilerCtxt
_xsltStackElem
_xsltTransformContext
xsltApplyOneTemplate
xsltCleanupGlobals
xsltEvalGlobalVariables
xsltEvalUserParams
xsltFlagRVTs
xsltFreeGlobalVariables
xsltInitGlobals
xsltLocalVariablePop
varibale
xsltXPathVariableLookup
varibales
xsltInitCtxtKeys
vendor
XSLT_DEFAULT_URL
XSLT_DEFAULT_VENDOR
version
XSLT_DEFAULT_VERSION
_xsltCompilerCtxt
_xsltStylesheet
version=
xsltGetProfileInformation
via
xsltAttrListTemplateProcess
xsltExtensionInstructionResultRegister
violated
XML_CAST_FPTR
visible
xsltApplyOneTemplate
void
XML_CAST_FPTR
_xsltStylesheet
xsltXPathFunctionLookup
xsltXPathVariableLookup

Letter w:

want
xsltEvalUserParams
warning
XML_CAST_FPTR
_xsltCompilerCtxt
warnings
_xsltCompilerCtxt
_xsltStylesheet
was
XSLT_STRANGE
_xsltCompilerCtxt
_xsltCompilerNodeInfo
_xsltStackElem
_xsltTemplate
xsltEvalXPathPredicate
xsltFlagRVTs
xsltNewLocale
xsltNextImport
xsltRegisterExtPrefix
way
xsltFindTemplate
well
xsltNamespaceAlias
went
xsltParseStylesheetProcess
were
_xsltStylesheet
when
XSLT_PARSE_OPTIONS
_xsltTransformContext
xsltDocLoaderFunc
xsltGetQNameURI2
xsltInitElemPreComp
xsltParseStylesheetDoc
xsltRegisterLocalRVT
xsltRegisterPersistRVT
xsltRegisterTmpRVT
xsltSetCtxtParseOptions
xsltXPathFunctionLookup
xsltXPathGetTransformContext
xsltXPathVariableLookup
where
xslHandleDebugger
xsltAttrListTemplateProcess
xsltAttrTemplateProcess
xsltCopyTextString
xsltGetQNameURI
wherever
_xsltStylesheet
whether
IS_XSLT_ELEM_FAST
_xsltCompilerCtxt
_xsltCompilerNodeInfo
_xsltFormatNumberInfo
xsltEvalStaticAttrValueTemplate
xsltNeedElemSpaceHandling
xsltSetXIncludeDefault
xsltTestCompMatchList
which
XSLT_ITEM_COMPATIBILITY_FIELDS
_xsltStackElem
_xsltTransformContext
xsltDocLoaderFunc
xsltExtensionInstructionResultFinalize
xsltGetSpecialNamespace
xsltLocalVariablePop
xsltRegisterExtElement
xsltRegisterExtFunction
xsltRegisterLocalRVT
xsltReleaseRVT
while
xsltAllocateExtra
xsltSetGenericDebugFunc
xsltSetGenericErrorFunc
xsltSetTransformErrorFunc
white-space
xsltNeedElemSpaceHandling
whitespace-stripping
_xsltCompilerCtxt
wildcards
xsltFindElemSpaceHandling
wise
xsltApplyStylesheet
xsltRunStylesheet
xsltRunStylesheetUser
with
CHECK_STOPPED0
XSLT_RVT_FUNC_RESULT
xsltAttrTemplateValueProcessNode
xsltEvalAttrValueTemplate
xsltEvalStaticAttrValueTemplate
xsltExtensionInstructionResultRegister
xsltFreeLocale
xsltGetCNsProp
xsltGetNamespace
xsltGetNsProp
xsltGetProfileInformation
xsltGetQNameURI
xsltGetSpecialNamespace
xsltGetUTF8Char
xsltInitCtxtExts
xsltLocaleStrcmp
xsltParseStylesheetCallerParam
xsltStrxfrm
with-params
_xsltStyleItemApplyTemplates
_xsltStyleItemCallTemplate
within
xsltExtensionInstructionResultFinalize
xsltFindDocument
xsltLoadDocument
xsltLoadStyleDocument
xsltLoadStylesheetPI
xsltParseStylesheetDoc
without
XML_CAST_FPTR
XSLT_PAT_NO_PRIORITY
_xsltTransformContext
won
XSLT_RVT_FUNC_RESULT
_xsltTemplate
xsltCopyNamespaceList
xsltFlagRVTs
work
xsltCheckWrite
wrapped
xsltFindElemSpaceHandling
wrapper
xsltDoSortFunction
write
xsltCheckWrite
written
xsltCheckWrite
xsltRunStylesheet
xsltRunStylesheetUser
xsltSaveResultTo
xsltSaveResultToFd
xsltSaveResultToFile
xsltSaveResultToFilename
wrt
xsltLocaleStrcmp

Letter x:

xmlDoc
xsltParseStylesheetDoc
xsltParseStylesheetImportedDoc
xsltParseStylesheetProcess
xsltReleaseRVT
xmlDocPtr
xsltGetProfileInformation
xsltRegisterLocalRVT
xsltSaveResultTo
xsltSaveResultToFd
xsltSaveResultToFile
xsltSaveResultToFilename
xsltSaveResultToString
xmlFree
xsltStrxfrm
xmlFreeDoc
xsltGetProfileInformation
xmlGetNsProp
xsltGetCNsProp
xsltGetNsProp
xmlGetUTF8Char
xsltGetUTF8Char
xmlNodePtr
_xsltTransformContext
xmlNs
_xsltNsMap
xmlNsPtr
xsltCopyNamespace
xsltCopyNamespaceList
xmlParserOption
xsltDocLoaderFunc
xsltSetCtxtParseOptions
xmlReadxxx
XSLT_PARSE_OPTIONS
xmlXPathCompExprPtr
xsltXPathCompile
xsltXPathCompileFlags
xmlXPathCompiledEvalToBoolean
XSLT_FAST_IF
xmlns=
xsltGetSpecialNamespace
xsl
XSLT_TRACE
xsl:
_xsltPrincipalStylesheetData
xsl:apply-templates
xsltTransformFunction
xsl:attribute
xsltAttribute
xsl:choose
xsltChoose
xsl:comment
xsltEvalTemplateString
xsl:for-each
xsltForEach
xsl:if
XSLT_FAST_IF
xsltIf
xsltTransformFunction
xsl:import
xsltDocLoaderFunc
xsl:include
xsltDocLoaderFunc
xsl:key
XSLT_REFACTORED_KEYCOMP
xsl:message
xsltMessage
xsl:namespace-alias
_xsltCompilerCtxt
xsltNamespaceAlias
xsl:param
_xsltTemplate
xsltApplyOneTemplate
xsltParseStylesheetCallerParam
xsl:processing-instruction
xsltEvalTemplateString
xsl:sort
XSLT_MAX_SORT
xsltSort
xsl:template
xsltApplyOneTemplate
xsltLocalVariablePop
xsltRegisterTmpRVT
xsl:text
xsltParseSequenceConstructor
xsl:use-attribute-set
xsltAttrListTemplateProcess
xsltAttrTemplateProcess
xsl:use-attribute-sets
xsltApplyAttributeSet
xsl:variable
xsltParseStylesheetVariable
xsl:with-param
_xsltStackElem
xsltParseStylesheetCallerParam
xsltProcessOneNode
xslDebugBreak
xslHandleDebugger
xslDebugStatus
xslHandleDebugger
xsltGetDebuggerStatus
xsltSetDebuggerStatus
xslt
IS_XSLT_ATTR_FAST
IS_XSLT_ELEM_FAST
xslHandleDebugger
xsltAttribute
xsltCheckExtPrefix
xsltCheckExtURI
xsltComment
xsltElement
xsltForEach
xsltNumber
xsltParseStylesheetProcess
xsltProcessingInstruction
xsltRegisterExtPrefix
xsltSort
xsltText
xsltValueOf
xslt:text
xsltParseTemplateContent
xsltAddTemplate
xsltFreeTemplateHashes
xsltApplySequenceConstructor
xsltAttrListTemplateProcess
xsltGetNamespace
xsltAttrTemplateValueProcess
xsltAttrTemplateValueProcessNode
xsltCopyPropList
xsltGetNamespace
xsltCopyTreeInternal
xsltCopyNamespaceList
xsltGetNamespace
xsltCreateRVT
xsltExtensionInstructionResultRegister
xsltDecimalFormatPtr
xsltDecimalFormatGetByName
xsltDecimalFormatGetByQName
xsltDocLoaderFunc
xsltDocLoaderFunc
xsltDocument
xsltFreeStyleDocuments
xsltDocumentComp
_xsltStyleItemDocument
xsltDocumentPtr
xsltFindDocument
xsltLoadDocument
xsltLoadStyleDocument
xsltElemPreComp
xsltElemPreCompDeallocator
xsltInitElemPreComp
xsltNewElemPreComp
xsltElement
xsltGetNamespace
xsltEvalAttrValueTemplate
xsltAttrTemplateValueProcessNode
xsltEvalUserParams
xsltEvalOneUserParam
xsltQuoteUserParams
xsltEvalVariable
xsltApplyOneTemplate
xsltExtElementPreCompTest
xsltStyleGetExtData
xsltExtInitTest
xsltStyleGetExtData
xsltGetInheritedNsList
xsltCheckExtPrefix
xsltGetNamespace
xsltGetPlainNamespace
xsltGetQNameURI
xsltGetQNameURI2
xsltGetTemplate
xsltFreeTemplateHashes
xsltLoadType
xsltDocLoaderFunc
xsltLocaleStrcmp
xsltStrxfrm
xsltNewLocale
xsltFreeLocale
xsltStrxfrm
xsltParseExtElemPrefixes
xsltRegisterExtPrefix
xsltParseStylesheetImportedDoc
xsltParseStylesheetProcess
xsltParseStylesheetInclude
xsltParseStylesheetProcess
xsltParseTemplateContent
xsltCheckExtPrefix
xsltCheckExtURI
xsltPointerList
xsltPointerListCreate
xsltPointerListFree
xsltPrecomputeStylesheet
xsltCheckExtURI
xsltProcessOneUserParamInternal
xsltEvalOneUserParam
xsltQuoteOneUserParam
xsltEvalOneUserParam
xsltQuoteUserParams
xsltEvalOneUserParam
xsltEvalUserParams
xsltQuoteOneUserParam
xsltRegisterAllExtras
xsltRegisterExtras
xsltRegisterExtPrefix
xsltRegisterExtPrefix
xsltStyleGetExtData
xsltRegisterLocalRVT
xsltExtensionInstructionResultRegister
xsltRegisterTmpRVT
xsltSecurityPrefsPtr
xsltGetDefaultSecurityPrefs
xsltSetCtxtSortFunc
xsltDoSortFunction
xsltSetSortFunc
xsltDoSortFunction
xsltShallowCopyElem
xsltCopyNamespaceList
xsltShallowCopyElement
xsltGetNamespace
xsltStackElemPtr
xsltParseStylesheetCallerParam
xsltStrxfrm
xsltLocaleStrcmp
xsltStylesheet
_xsltElemPreComp
xsltStylesheetPtr
xsltNewStylesheet
xsltTemplatePtr
xsltFindTemplate
xsltGetTemplate
xsltTimestamp
xsltCalibrateAdjust
xsltTransformContextPtr
xsltNewTransformContext

A-I J-R S-a b-c d-e f-g h-i j-m n-o p-p q-s t-u v-x y-z

Daniel Veillard

PK|0]<.mm epatents.pngnu[PNG  IHDR}=gAMA acPLTE @TI`TIdG-YXo&@/6C$3l*3@*$g@~%@k @X-2N6E4o# ]oLT`@ ]8tEXtSoftwareXV Version 3.10a Rev: 12/29/94 (PNG patch 1.2).I^IDATxv8.gحu?傮#iFHsя\045߾+{$ @BBlT~]Nʯj3H/N!rSӟH|xӑiq|)Omi .G2>)]txI-y`R:Jx!_/}I+>{ztg90*zMқAӏ%t '|Wze M.3Ge]۱2EgQ=27tVy:s+d촛9-#@QSz0:Nv2z-{uֿƽ^ZDSLA$LGJVJJI^l> Ik m n7aJm xo?(=m wӜ:'5Q-D>}c~ <(:"ct7GG/"tiBWӓR.ONv]zҤtK }vy^^PG'j/L'-Eߏ֙5tbk|KtTz5ENj,Z䬝s .fLܽQLnO iJF\Zv|t˕/K}+H6i*QOtd3]xnfsbn'٬/B@w*?=DtvOѭ̾p\m^IW=~qtaJ7lzݼ܏(z~d3wHM\]Oqwwÿ|I5}aw7Nf]/HjcjR_`q3ϑJE[@mm7,LW ?n t'~GbٕsmXt9xqJï[}/ÑX֘ ҹ=| &%X36I8ʳta2Uؖ>nP4 n%;:odxbf -/ Introduction
Action against software patentsGNOME2 LogoW3C logoRed Hat Logo
Made with Libxslt Logo

The XSLT C library for GNOME

Introduction

Main Menu
Related links
API Indexes

This document describes libxslt, the XSLT C library developed for the GNOME project.

Here are some key points about libxslt:

  • Libxslt is a C implementation
  • Libxslt is based on libxml for XML parsing, tree manipulation and XPath support
  • It is written in plain C, making as few assumptions as possible, and sticking closely to ANSI C/POSIX for easy embedding. Should works on Linux/Unix/Windows.
  • This library is released under the MIT Licence
  • Though not designed primarily with performances in mind, libxslt seems to be a relatively fast processor.

Daniel Veillard

PK|0]~ xsltproc2.htmlnu[ The xsltproc tool
Action against software patentsGNOME2 LogoW3C logoRed Hat Logo
Made with Libxslt Logo

The XSLT C library for GNOME

The xsltproc tool

Main Menu
Related links
API Indexes

This program is the simplest way to use libxslt: from the command line. It is also used for doing the regression tests of the library.

It takes as first argument the path or URL to an XSLT stylesheet, the next arguments are filenames or URIs of the inputs to be processed. The output of the processing is redirected on the standard output. There is actually a few more options available:

orchis:~ -> xsltproc
Usage: xsltproc [options] stylesheet file [file ...]
   Options:
      --version or -V: show the version of libxml and libxslt used
      --verbose or -v: show logs of what's happening
      --output file or -o file: save to a given file
      --timing: display the time used
      --repeat: run the transformation 20 times
      --debug: dump the tree of the result instead
      --novalid: skip the DTD loading phase
      --noout: do not dump the result
      --maxdepth val : increase the maximum depth
      --html: the input document is(are) an HTML file(s)
      --docbook: the input document is SGML docbook
      --param name value : pass a (parameter,value) pair
      --nonet refuse to fetch DTDs or entities over network
      --warnnet warn against fetching over the network
      --catalogs : use the catalogs from $SGML_CATALOG_FILES
      --xinclude : do XInclude processing on document input
      --profile or --norman : dump profiling information 
orchis:~ ->

Daniel Veillard

PK|0] SooAPIchunk7.htmlnu[ API Alphabetic Index j-m for libxslt
Action against software patentsGNOME2 LogoW3C logoRed Hat Logo
Made with Libxslt Logo

The XSLT C library for GNOME

API Alphabetic Index j-m for libxslt

Main Menu
Related links
API Indexes

A-I J-R S-a b-c d-e f-g h-i j-m n-o p-p q-s t-u v-x y-z

Letter j:

java
xsltFormatNumberConversion
jdk
xsltFormatNumberConversion
just
_xsltCompilerCtxt

Letter k:

keep
_xsltCompilerCtxt
keeping
_xsltStylesheet
kept
XSLT_REFACTORED_KEYCOMP
_xsltDocument
xsltParseStylesheetDoc
key
_xsltDocument
_xsltStylesheet
xsltAddKey
xsltGetKey
xsltInitCtxtKey
xsltKeyFunction
xsltNewDocument
xsltNewStyleDocument
keys
_xsltTransformContext
xsltFreeDocumentKeys
xsltFreeKeys
xsltInitAllDocKeys
xsltInitCtxtKeys
kind
xsltDocLoaderFunc
known
_xsltTransformContext

Letter l:

label
CHECK_STOPPEDE
language
xsltNewLocale
xsltTransformFunction
last
_xsltStylesheet
_xsltTransformContext
xsltNextImport
later
xsltDocLoaderFunc
xsltReleaseRVT
lead
xsltApplyStylesheet
xsltRunStylesheet
xsltRunStylesheetUser
leaks
xsltAttrListTemplateProcess
leaving
xsltFlagRVTs
left
xsltApplyOneTemplate
len
xsltGetUTF8Char
level
_xsltTransformContext
xsltDebugGetDefaultTrace
xsltDebugSetDefaultTrace
xsltLocalVariablePush
libexsl
xsltApplyOneTemplate
library
xsltCleanupGlobals
xsltRegisterExtModule
xsltRegisterExtModuleFull
xsltSetDebuggerCallbacks
xsltUnregisterExtModule
libxml2
xsltGetUTF8Char
xsltSetCtxtParseOptions
xsltXPathCompileFlags
libxslt
XSLT_LIBXSLT_NAMESPACE
XSLT_REFACTORED_VARS
xsltExtensionInstructionResultFinalize
xsltExtensionInstructionResultRegister
xsltFunctionNodeSet
lifespan
xsltGetQNameURI
lifetime
_xsltStackElem
like
_xsltCompilerCtxt
xsltCheckWrite
xsltGetProfileInformation
xsltSecurityCheck
xsltTransformFunction
line
xsltTransformError
literal
_xsltCompilerNodeInfo
_xsltEffectiveNs
xsltAttrTemplateProcess
xsltGetSpecialNamespace
xsltParseTemplateContent
literally
xsltEvalOneUserParam
xsltEvalUserParams
xsltQuoteUserParams
load
xsltDocLoaderFunc
xsltLoadDocument
xsltLoadStyleDocument
xsltLoadStylesheetPI
xsltSetLoaderFunc
loaded
xsltFreeDocuments
xsltSetXIncludeDefault
xsltShutdownCtxtExts
xsltShutdownExts
loading
XSLT_PARSE_OPTIONS
xsltDocLoaderFunc
xsltSetCtxtParseOptions
xsltSetLoaderFunc
local
XSLT_RVT_VARIABLE
_xsltCompilerCtxt
_xsltStackElem
_xsltTemplate
_xsltTransformContext
xsltDecimalFormatGetByQName
xsltLocalVariablePush
xsltParseStylesheetParam
xsltParseStylesheetVariable
xsltSplitQName
locale
XSLT_LOCALE_NONE
XSLT_LOCALE_POSIX
XSLT_LOCALE_WINAPI
xsltFreeLocale
xsltFreeLocales
xsltLocaleStrcmp
xsltNewLocale
xsltStrxfrm
localname
xsltSplitQName
locate
xsltLoadStylesheetPI
location
_xsltStackElem
look
xsltGetKey
xsltGetTemplate
looks
xsltGetCNsProp
xsltGetExtInfo
xsltGetNsProp
lookup
xsltGetQNameURI
xsltGetSecurityPrefs
lost
xsltRunStylesheet
xsltRunStylesheetUser

Letter m:

macro
XML_CAST_FPTR
XSLT_GET_IMPORT_INT
XSLT_GET_IMPORT_PTR
XSLT_IS_RES_TREE_FRAG
XSLT_MARK_RES_TREE_FRAG
XSLT_REGISTER_FUNCTION_LOOKUP
XSLT_REGISTER_VARIABLE_LOOKUP
xsltRunStylesheet
xsltRunStylesheetUser
made
xsltDocLoaderFunc
xsltIsBlank
main
_xsltDocument
xsltRunStylesheet
xsltRunStylesheetUser
make
xsltAllocateExtraCtxt
makes
xsltCheckWrite
map
XSLT_GET_INTERNAL_NSMAP
_xsltPrincipalStylesheetData
xsltRestoreDocumentNamespaces
mapped
_xsltNsMap
mapping
XSLT_HAS_INTERNAL_NSMAP
xsltAttrTemplateValueProcessNode
xsltEvalXPathStringNs
marked
xsltExtensionInstructionResultFinalize
mask
_xsltTransformContext
xsltDebugGetDefaultTrace
xsltDebugSetDefaultTrace
massive
xsltRegisterTmpRVT
match
xsltAddKey
xsltNormalizeCompSteps
match=
xsltGetProfileInformation
matches
xsltTestCompMatchList
matching
_xsltTemplate
xsltCompilePattern
xsltGetNamespace
xsltGetSpecialNamespace
xsltNewLocale
may
_xsltDecimalFormat
xslAddCall
xsltApplyStylesheet
xsltRunStylesheet
xsltRunStylesheetUser
means
xsltExtensionInstructionResultFinalize
xsltGetTemplate
xsltSetGenericDebugFunc
xsltSetGenericErrorFunc
xsltSetTransformErrorFunc
mechanism
xsltFreeTemplateHashes
mechanisms
_xsltCompilerCtxt
memory
xsltAttrListTemplateProcess
xsltFreeAVTList
xsltFreeAttributeSetsHashes
xsltFreeCompMatchList
xsltFreeExts
xsltFreeKeys
xsltFreeNamespaceAliasHashes
xsltFreeStackElemList
xsltFreeStylePreComps
xsltFreeStylesheet
xsltFreeTemplateHashes
xsltFreeTransformContext
xsltGetNsProp
xsltRegisterTmpRVT
xsltSetDebuggerCallbacks
message
xsltMessage
xsltTransformError
messages
XSLT_TRACE
xsltSetGenericDebugFunc
xsltSetGenericErrorFunc
xsltSetTransformErrorFunc
xsltTransformError
method
_xsltStylesheet
might
xsltApplyOneTemplate
xsltRegisterTmpRVT
mille
xsltFormatNumberConversion
milliseconds
xsltTimestamp
mode
XSLT_REFACTORED_KEYCOMP
_xsltCompilerCtxt
_xsltCompilerNodeInfo
_xsltTemplate
_xsltTransformContext
xsltAddTemplate
mode=
xsltGetProfileInformation
models
xsltParseAnyXSLTElem
modified
xsltDocLoaderFunc
xsltGetNamespace
xsltGetSpecialNamespace
xsltLoadStylesheetPI
modules
XSLT_REGISTER_FUNCTION_LOOKUP
XSLT_REGISTER_VARIABLE_LOOKUP
xsltInitCtxtExts
xsltShutdownCtxtExts
xsltShutdownExts
more
xsltEvalOneUserParam
xsltFormatNumberConversion
multiple
_xsltFormatNumberInfo
xsltRunStylesheet
xsltRunStylesheetUser
multiply
xsltFormatNumberConversion
must
xslHandleDebugger
xsltAttrTemplateValueProcess
xsltAttrTemplateValueProcessNode
xsltEvalAVT
xsltEvalAttrValueTemplate
xsltEvalStaticAttrValueTemplate
xsltEvalXPathString
xsltEvalXPathStringNs
xsltStrxfrm

A-I J-R S-a b-c d-e f-g h-i j-m n-o p-p q-s t-u v-x y-z

Daniel Veillard

PK|0]5XXextensions.htmlnu[ Writing extensions
Action against software patentsGNOME2 LogoW3C logoRed Hat Logo
Made with Libxslt Logo

The XSLT C library for GNOME

Writing extensions

Main Menu
Related links
API Indexes

Table of content

Introduction

This document describes the work needed to write extensions to the standard XSLT library for use with libxslt, the XSLT C library developed for the GNOME project.

Before starting reading this document it is highly recommended to get familiar with the libxslt internals.

Note: this documentation is by definition incomplete and I am not good at spelling, grammar, so patches and suggestions are really welcome.

Basics

The XSLT specification provides two ways to extend an XSLT engine:

In both cases the extensions need to be associated to a new namespace, i.e. an URI used as the name for the extension's namespace (there is no need to have a resource there for this to work).

libxslt provides a few extensions itself, either in the libxslt namespace "http://xmlsoft.org/XSLT/namespace" or in namespaces for other well known extensions provided by other XSLT processors like Saxon, Xalan or XT.

Extension modules

Since extensions are bound to a namespace name, usually sets of extensions coming from a given source are using the same namespace name defining in practice a group of extensions providing elements, functions or both. From the libxslt point of view those are considered as an "extension module", and most of the APIs work at a module point of view.

Registration of new functions or elements are bound to the activation of the module. This is currently done by declaring the namespace as an extension by using the attribute extension-element-prefixes on the xsl:stylesheet element.

An extension module is defined by 3 objects:

  • the namespace name associated
  • an initialization function
  • a shutdown function

Registering a module

Currently a libxslt module has to be compiled within the application using libxslt. There is no code to load dynamically shared libraries associated to a namespace (this may be added but is likely to become a portability nightmare).

The current way to register a module is to link the code implementing it with the application and to call a registration function:

int xsltRegisterExtModule(const xmlChar *URI,
                          xsltExtInitFunction initFunc,
                          xsltExtShutdownFunction shutdownFunc);

The associated header is read by:

#include<libxslt/extensions.h>

which also defines the type for the initialization and shutdown functions

Loading a module

Once the module URI has been registered and if the XSLT processor detects that a given stylesheet needs the functionalities of an extended module, this one is initialized.

The xsltExtInitFunction type defines the interface for an initialization function:

/**
 * xsltExtInitFunction:
 * @ctxt:  an XSLT transformation context
 * @URI:  the namespace URI for the extension
 *
 * A function called at initialization time of an XSLT
 * extension module
 *
 * Returns a pointer to the module specific data for this
 * transformation
 */
typedef void *(*xsltExtInitFunction)(xsltTransformContextPtr ctxt,
                                     const xmlChar *URI);

There are 3 things to notice:

  • The function gets passed the namespace name URI as an argument. This allows a single function to provide the initialization for multiple logical modules.
  • It also gets passed a transformation context. The initialization is done at run time before any processing occurs on the stylesheet but it will be invoked separately each time for each transformation.
  • It returns a pointer. This can be used to store module specific information which can be retrieved later when a function or an element from the extension is used. An obvious example is a connection to a database which should be kept and reused along with the transformation. NULL is a perfectly valid return; there is no way to indicate a failure at this level

What this function is expected to do is:

  • prepare the context for this module (like opening the database connection)
  • register the extensions specific to this module

Registering an extension function

There is a single call to do this registration:

int xsltRegisterExtFunction(xsltTransformContextPtr ctxt,
                            const xmlChar *name,
                            const xmlChar *URI,
                            xmlXPathEvalFunc function);

The registration is bound to a single transformation instance referred by ctxt, name is the UTF8 encoded name for the NCName of the function, and URI is the namespace name for the extension (no checking is done, a module could register functions or elements from a different namespace, but it is not recommended).

Implementing an extension function

The implementation of the function must have the signature of a libxml XPath function:

/**
 * xmlXPathEvalFunc:
 * @ctxt: an XPath parser context
 * @nargs: the number of arguments passed to the function
 *
 * an XPath evaluation function, the parameters are on the
 * XPath context stack
 */

typedef void (*xmlXPathEvalFunc)(xmlXPathParserContextPtr ctxt,
                                 int nargs);

The context passed to an XPath function is not an XSLT context but an XPath context. However it is possible to find one from the other:

  • The function xsltXPathGetTransformContext provides this lookup facility:
    xsltTransformContextPtr
             xsltXPathGetTransformContext
                              (xmlXPathParserContextPtr ctxt);
  • The xmlXPathContextPtr associated to an xsltTransformContext is stored in the xpathCtxt field.

The first thing an extension function may want to do is to check the arguments passed on the stack, the nargs parameter will tell how many of them were provided on the XPath expression. The macro valuePop will extract them from the XPath stack:

#include <libxml/xpath.h>
#include <libxml/xpathInternals.h>

xmlXPathObjectPtr obj = valuePop(ctxt); 

Note that ctxt is the XPath context not the XSLT one. It is then possible to examine the content of the value. Check the description of XPath objects if necessary. The following is a common sequence checking whether the argument passed is a string and converting it using the built-in XPath string() function if this is not the case:

if (obj->type != XPATH_STRING) {
    valuePush(ctxt, obj);
    xmlXPathStringFunction(ctxt, 1);
    obj = valuePop(ctxt);
}

Most common XPath functions are available directly at the C level and are exported either in <libxml/xpath.h> or in <libxml/xpathInternals.h>.

The extension function may also need to retrieve the data associated to this module instance (the database connection in the previous example) this can be done using the xsltGetExtData:

void * xsltGetExtData(xsltTransformContextPtr ctxt,
                      const xmlChar *URI);

Again the URI to be provided is the one which was used when registering the module.

Once the function finishes, don't forget to:

  • push the return value on the stack using valuePush(ctxt, obj)
  • deallocate the parameters passed to the function using xmlXPathFreeObject(obj)

Examples for extension functions

The module libxslt/functions.c contains the sources of the XSLT built-in functions, including document(), key(), generate-id(), etc. as well as a full example module at the end. Here is the test function implementation for the libxslt:test function:

/**
 * xsltExtFunctionTest:
 * @ctxt:  the XPath Parser context
 * @nargs:  the number of arguments
 *
 * function libxslt:test() for testing the extensions support.
 */
static void
xsltExtFunctionTest(xmlXPathParserContextPtr ctxt, int nargs)
{
    xsltTransformContextPtr tctxt;
    void *data;

    tctxt = xsltXPathGetTransformContext(ctxt);
    if (tctxt == NULL) {
        xsltGenericError(xsltGenericErrorContext,
            "xsltExtFunctionTest: failed to get the transformation context\n");
        return;
    }
    data = xsltGetExtData(tctxt, (const xmlChar *) XSLT_DEFAULT_URL);
    if (data == NULL) {
        xsltGenericError(xsltGenericErrorContext,
            "xsltExtFunctionTest: failed to get module data\n");
        return;
    }
#ifdef WITH_XSLT_DEBUG_FUNCTION
    xsltGenericDebug(xsltGenericDebugContext,
                     "libxslt:test() called with %d args\n", nargs);
#endif
}

Registering an extension element

There is a single call to do this registration:

int xsltRegisterExtElement(xsltTransformContextPtr ctxt,
                           const xmlChar *name,
                           const xmlChar *URI,
                           xsltTransformFunction function);

It is similar to the mechanism used to register an extension function, except that the signature of an extension element implementation is different.

The registration is bound to a single transformation instance referred to by ctxt, name is the UTF8 encoded name for the NCName of the element, and URI is the namespace name for the extension (no checking is done, a module could register elements for a different namespace, but it is not recommended).

Implementing an extension element

The implementation of the element must have the signature of an XSLT transformation function:

/** 
 * xsltTransformFunction: 
 * @ctxt: the XSLT transformation context
 * @node: the input node
 * @inst: the stylesheet node 
 * @comp: the compiled information from the stylesheet 
 * 
 * signature of the function associated to elements part of the
 * stylesheet language like xsl:if or xsl:apply-templates.
 */ 
typedef void (*xsltTransformFunction)
                          (xsltTransformContextPtr ctxt,
                           xmlNodePtr node,
                           xmlNodePtr inst,
                           xsltStylePreCompPtr comp);

The first argument is the XSLT transformation context. The second and third arguments are xmlNodePtr i.e. internal memory representation of XML nodes. They are respectively node from the the input document being transformed by the stylesheet and inst the extension element in the stylesheet. The last argument is comp a pointer to a precompiled representation of inst but usually for an extension function this value is NULL by default (it could be added and associated to the instruction in inst->_private).

The same functions are available from a function implementing an extension element as in an extension function, including xsltGetExtData().

The goal of an extension element being usually to enrich the generated output, it is expected that they will grow the currently generated output tree. This can be done by grabbing ctxt->insert which is the current libxml node being generated (Note this can also be the intermediate value tree being built for example to initialize a variable, the processing should be similar). The functions for libxml tree manipulation from <libxml/tree.h> can be employed to extend or modify the tree, but it is required to preserve the insertion node and its ancestors since there are existing pointers to those elements still in use in the XSLT template execution stack.

Example for extension elements

The module libxslt/transform.c contains the sources of the XSLT built-in elements, including xsl:element, xsl:attribute, xsl:if, etc. There is a small but full example in functions.c providing the implementation for the libxslt:test element, it will output a comment in the result tree:

/**
 * xsltExtElementTest:
 * @ctxt:  an XSLT processing context
 * @node:  The current node
 * @inst:  the instruction in the stylesheet
 * @comp:  precomputed information
 *
 * Process a libxslt:test node
 */
static void
xsltExtElementTest(xsltTransformContextPtr ctxt, xmlNodePtr node,
                   xmlNodePtr inst,
                   xsltStylePreCompPtr comp)
{
    xmlNodePtr comment;

    if (ctxt == NULL) {
        xsltGenericError(xsltGenericErrorContext,
                         "xsltExtElementTest: no transformation context\n");
        return;
    }
    if (node == NULL) {
        xsltGenericError(xsltGenericErrorContext,
                         "xsltExtElementTest: no current node\n");
        return;
    }
    if (inst == NULL) {
        xsltGenericError(xsltGenericErrorContext,
                         "xsltExtElementTest: no instruction\n");
        return;
    }
    if (ctxt->insert == NULL) {
        xsltGenericError(xsltGenericErrorContext,
                         "xsltExtElementTest: no insertion point\n");
        return;
    }
    comment =
        xmlNewComment((const xmlChar *)
                      "libxslt:test element test worked");
    xmlAddChild(ctxt->insert, comment);
}

The shutdown of a module

When the XSLT processor ends a transformation, the shutdown function (if it exists) for each of the modules initialized is called. The xsltExtShutdownFunction type defines the interface for a shutdown function:

/**
 * xsltExtShutdownFunction:
 * @ctxt:  an XSLT transformation context
 * @URI:  the namespace URI for the extension
 * @data:  the data associated to this module
 *
 * A function called at shutdown time of an XSLT extension module
 */
typedef void (*xsltExtShutdownFunction) (xsltTransformContextPtr ctxt,
                                         const xmlChar *URI,
                                         void *data);

This is really similar to a module initialization function except a third argument is passed, it's the value that was returned by the initialization function. This allows the routine to deallocate resources from the module for example close the connection to the database to keep the same example.

Future work

Well, some of the pieces missing:

  • a way to load shared libraries to instantiate new modules
  • a better detection of extension functions usage and their registration without having to use the extension prefix which ought to be reserved to element extensions.
  • more examples
  • implementations of the EXSLT common extension libraries, Thomas Broyer nearly finished implementing them.

Daniel Veillard

PK|0]#U&.. xslt.htmlnu[ The XSLT C library for GNOME

The XSLT C library for GNOME

libxslt

Libxslt is the XSLT C library developed for the GNOME project. XSLT itself is a an XML language to define transformation for XML. Libxslt is based on libxml2 the XML C library developed for the GNOME project. It also implements most of the EXSLT set of processor-portable extensions functions and some of Saxon's evaluate and expressions extensions.

People can either embed the library in their application or use xsltproc the command line processing tool. This library is free software and can be reused in commercial applications (see the intro)

External documents:

Logo designed by Marc Liyanage.

Introduction

This document describes libxslt, the XSLT C library developed for the GNOME project.

Here are some key points about libxslt:

  • Libxslt is a C implementation
  • Libxslt is based on libxml for XML parsing, tree manipulation and XPath support
  • It is written in plain C, making as few assumptions as possible, and sticking closely to ANSI C/POSIX for easy embedding. Should works on Linux/Unix/Windows.
  • This library is released under the MIT Licence
  • Though not designed primarily with performances in mind, libxslt seems to be a relatively fast processor.

Documentation

There are some on-line resources about using libxslt:

  1. Check the API documentation automatically extracted from code comments (using the program apibuild.py, developed for libxml, together with the xsl script 'newapi.xsl' and the libxslt xsltproc program).
  2. Look at the mailing-list archive.
  3. Of course since libxslt is based on libxml, it's a good idea to at least read libxml description

Reporting bugs and getting help

If you need help with the XSLT language itself, here are a number of useful resources:

Well, bugs or missing features are always possible, and I will make a point of fixing them in a timely fashion. The best way to report a bug is to use the GNOME bug tracking database (make sure to use the "libxslt" module name). Before filing a bug, check the list of existing libxslt bugs to make sure it hasn't already been filed. I look at reports there regularly and it's good to have a reminder when a bug is still open. Be sure to specify that the bug is for the package libxslt.

For small problems you can try to get help on IRC, the #xml channel on irc.gnome.org (port 6667) usually have a few person subscribed which may help (but there is no guarantee and if a real issue is raised it should go on the mailing-list for archival).

There is also a mailing-list xslt@gnome.org for libxslt, with an on-line archive. To subscribe to this list, please visit the associated Web page and follow the instructions.

Alternatively, you can just send the bug to the xslt@gnome.org list, if it's really libxslt related I will approve it.. Please do not send me mail directly especially for portability problem, it makes things really harder to track and in some cases I'm not the best person to answer a given question, ask the list instead. Do not send code, I won't debug it (but patches are really appreciated!).

Please note that with the current amount of virus and SPAM, sending mail to the list without being subscribed won't work. There is *far too many bounces* (in the order of a thousand a day !) I cannot approve them manually anymore. If your mail to the list bounced waiting for administrator approval, it is LOST ! Repost it and fix the problem triggering the error. Also please note that emails with a legal warning asking to not copy or redistribute freely the information they contain are NOT acceptable for the mailing-list, such mail will as much as possible be discarded automatically, and are less likely to be answered if they made it to the list, DO NOT post to the list from an email address where such legal requirements are automatically added, get private paying support if you can't share information.

Check the following too before posting:

  • use the search engine to get information related to your problem.
  • make sure you are using a recent version, and that the problem still shows up in those
  • check the list archives to see if the problem was reported already, in this case there is probably a fix available, similarly check the registered open bugs
  • make sure you can reproduce the bug with xsltproc, a very useful thing to do is run the transformation with -v argument and redirect the standard error to a file, then search in this file for the transformation logs just preceding the possible problem
  • Please send the command showing the error as well as the input and stylesheet (as an attachment)

Then send the bug with associated information to reproduce it to the xslt@gnome.org list; if it's really libxslt related I will approve it. Please do not send mail to me directly, it makes things really hard to track and in some cases I am not the best person to answer a given question, ask on the list.

To be really clear about support:

  • Support or help request MUST be sent to the list or on bugzilla in case of problems, so that the Question and Answers can be shared publicly. Failing to do so carries the implicit message "I want free support but I don't want to share the benefits with others" and is not welcome. I will automatically Carbon-Copy the xslt@gnome.org mailing list for any technical reply made about libxml2 or libxslt.
  • There is no guarantee for support, if your question remains unanswered after a week, repost it, making sure you gave all the detail needed and the information requested.
  • Failing to provide information as requested or double checking first for prior feedback also carries the implicit message "the time of the library maintainers is less valuable than my time" and might not be welcome.

Of course, bugs reports with a suggested patch for fixing them will probably be processed faster.

If you're looking for help, a quick look at the list archive may actually provide the answer, I usually send source samples when answering libxslt usage questions. The auto-generated documentation is not as polished as I would like (I need to learn more about Docbook), but it's a good starting point.

How to help

You can help the project in various ways, the best thing to do first is to subscribe to the mailing-list as explained before, check the archives and the GNOME bug database::

  1. provide patches when you find problems
  2. provide the diffs when you port libxslt to a new platform. They may not be integrated in all cases but help pinpointing portability problems and
  3. provide documentation fixes (either as patches to the code comments or as HTML diffs).
  4. provide new documentations pieces (translations, examples, etc ...)
  5. Check the TODO file and try to close one of the items
  6. take one of the points raised in the archive or the bug database and provide a fix. Get in touch with me before to avoid synchronization problems and check that the suggested fix will fit in nicely :-)

Downloads

The latest versions of libxslt can be found on the xmlsoft.org server. (NOTE that you need the libxml2, libxml2-devel, libxslt and libxslt-devel packages installed to compile applications using libxslt.) Igor Zlatkovic is now the maintainer of the Windows port, he provides binaries. CSW provides Solaris binaries, and Steve Ball provides Mac Os X binaries.

Snapshot:

Contribs:

I do accept external contributions, especially if compiling on another platform, get in touch with me to upload the package. I will keep them in the contrib directory

Libxslt is also available from GIT:

  • See libxslt Git web. To checkout a local tree use:

    git clone git://git.gnome.org/libxslt
  • The libxml2 module is also present there

FAQ

  1. Troubles compiling or linking programs using libxslt

    Usually the problem comes from the fact that the compiler doesn't get the right compilation or linking flags. There is a small shell script xslt-config which is installed as part of libxslt usual install process which provides those flags. Use

    xslt-config --cflags

    to get the compilation flags and

    xslt-config --libs

    to get the linker flags. Usually this is done directly from the Makefile as:

    CFLAGS=`xslt-config --cflags`

    LIBS=`xslt-config --libs`

    Note also that if you use the EXSLT extensions from the program then you should prepend -lexslt to the LIBS options

  2. passing parameters on the xsltproc command line doesn't work

    xsltproc --param test alpha foo.xsl foo.xml

    the param does not get passed and ends up as ""

    In a nutshell do a double escaping at the shell prompt:

    xsltproc --param test "'alpha'" foo.xsl foo.xml

    i.e. the string value is surrounded by " and ' then terminated by ' and ". Libxslt interpret the parameter values as XPath expressions, so the string ->alpha<- is intepreted as the node set matching this string. You really want ->'alpha'<- to be passed to the processor. And to allow this you need to escape the quotes at the shell level using ->"'alpha'"<- .

    or use

    xsltproc --stringparam test alpha foo.xsl foo.xml

  3. Is there C++ bindings ?

    Yes for example xmlwrapp , see the related pages about bindings

News

See the git page to get a description of the recent commits.

Those are the public releases made:

v1.1.31: Oct 06 2017

  • Portability:
    Fix win32/configure.js (Nick Wellnhofer)
  • Bug Fixes:
    Fix pkg-config related regressions in configure script (Nick Wellnhofer)
  • Improvements:
    Adjust expected error output for libxml2 changes (Nick Wellnhofer),
    Misc autoconf updates (Nick Wellnhofer)

v1.1.30: Sep 04 2017

  • Documentation:
    Misc doc fixes (Nick Wellnhofer)
  • Portability:
    Look for libxml2 via pkg-config first (Elliott Sales de Andrade),
    Change default SOPREFIX on Windows to "bin" (Nick Wellnhofer),
    Add WIN32_EXTRA_LDFLAGS to tests/plugins/Makefile.am (Michael Haubenwallner)
  • Bug Fixes:
    Also fix memory hazards in exsltFuncResultElem (Nick Wellnhofer),
    Fix NULL deref in xsltDefaultSortFunction (Nick Wellnhofer),
    Fix memory hazards in exsltFuncFunctionFunction (Nick Wellnhofer),
    Fix memory leaks in EXSLT error paths (Nick Wellnhofer),
    Fix memory leak in str:concat with empty node-set (Nick Wellnhofer),
    Fix memory leaks in error paths (Nick Wellnhofer),
    Switch to xmlUTF8Strsize in numbers.c (Nick Wellnhofer),
    Fix NULL pointer deref in xsltFormatNumberFunction (Nick Wellnhofer),
    Fix UTF-8 check in str:padding (Nick Wellnhofer),
    Fix xmlStrPrintf argument (Nick Wellnhofer),
    Check for overflow in _exsltDateParseGYear (Nick Wellnhofer),
    Fix double to int conversion (Nick Wellnhofer),
    Check for overflow in exsltDateParseDuration (Nick Wellnhofer),
    Change version of xsltMaxVars back to 1.0.24 (Nick Wellnhofer),
    Disable xsltCopyTextString optimization for extensions (Nick Wellnhofer),
    Create DOCTYPE for HTML version 5 (Nick Wellnhofer),
    Make xsl:decimal-format work with namespaces (Nick Wellnhofer),
    Remove norm:localTime extension function (Nick Wellnhofer),
    Check for integer overflow in xsltAddTextString (Nick Wellnhofer),
    Detect infinite recursion when evaluating function arguments (Nick Wellnhofer),
    Fix memory leak in xsltElementAvailableFunction (Nick Wellnhofer),
    Fix for pattern predicates calling functions (Nick Wellnhofer),
    Fix cmd.exe invocations in Makefile.mingw (Nick Wellnhofer),
    Don't try to install index.sgml (Nick Wellnhofer),
    Fix symbols.xml (Nick Wellnhofer),
    Fix heap overread in xsltFormatNumberConversion (Nick Wellnhofer),
    Fix <xsl:number level="any"/> for non-element nodes (Nick Wellnhofer),
    Fix unreachable code in xsltAddChild (mahendra.n),
    Change version number in xsl:version warning (Nick Wellnhofer),
    Avoid infinite recursion after failed param evaluation (Nick Wellnhofer),
    Stop if potential recursion is detected (Nick Wellnhofer),
    Consider built-in templates in apply-imports (Nick Wellnhofer),
    Fix precedence with multiple attribute sets (Nick Wellnhofer),
    Rework attribute set resolution (Nick Wellnhofer)
  • Improvements:
    Add .travis.yml (Nick Wellnhofer),
    Silence tests a little (Nick Wellnhofer),
    Set LIBXML_SRC to absolute path (Nick Wellnhofer),
    Add missing #include (Nick Wellnhofer),
    Adjust expected error messages in tests (Nick Wellnhofer),
    Make xsltDebug more quiet (Nick Wellnhofer),
    New-line terminate error message that missed this convention (Jan Pokorn),
    Use xmlBuffers in EXSLT string functions (Nick Wellnhofer),
    Switch to xmlUTF8Strsize in EXSLT string functions (Nick Wellnhofer),
    Check for return value of xmlUTF8Strlen (Nick Wellnhofer),
    Avoid double/long round trip in FORMAT_ITEM (Nick Wellnhofer),
    Separate date and duration structs (Nick Wellnhofer),
    Check for overflow in _exsltDateDifference (Nick Wellnhofer),
    Clamp seconds field of durations (Nick Wellnhofer),
    Change _exsltDateAddDurCalc parameter types (Nick Wellnhofer),
    Fix date:difference with time zones (Nick Wellnhofer),
    Rework division/remainder arithmetic in date.c (Nick Wellnhofer),
    Remove exsltDateCastDateToNumber (Nick Wellnhofer),
    Change internal representation of years (Nick Wellnhofer),
    Optimize IS_LEAP (Nick Wellnhofer),
    Link libraries with libm (Jussi Kukkonen),
    Rename xsltCopyTreeInternal to xsltCopyTree (Nick Wellnhofer),
    Update linker version script (Nick Wellnhofer),
    Add local wildcard to version script (Nick Wellnhofer),
    Make some symbols static (Nick Wellnhofer),
    Remove redundant NULL check in xsltNumberComp (mahendra.n),
    Fix forwards compatibility for imported stylesheets (Nick Wellnhofer),
    Reduce warnings in forwards-compatible mode (Nick Wellnhofer),
    Precompute XSLT elements after preprocessing (Nick Wellnhofer),
    Fix whitespace in xsltParseStylesheetTop (Nick Wellnhofer),
    Consolidate recursion checks (Nick Wellnhofer),
    Treat XSLT_STATE_STOPPED same as errors (Nick Wellnhofer),
    Make sure that XSLT_STATE_STOPPED isn't overwritten (Nick Wellnhofer),
    Add comment regarding built-in templates and params (Nick Wellnhofer),
    Rewrite memory management of local RVTs (Nick Wellnhofer),
    Validate QNames of attribute sets (Nick Wellnhofer),
    Add xsl:attribute-set regression tests (Nick Wellnhofer),
    Ignore imported stylesheets in xsltApplyAttributeSet (Nick Wellnhofer)

1.1.29: May 24 2016

  • Security:
    CVE-2015-7995 Fix for type confusion in preprocessing attributes (Daniel Veillard)
  • Documentation:
  • Portability:
    Fix a portibility problem with previous commit (Eduard Sanou),
    Fix MingW build (Nick Wellnhofer),
    Correctly emulate snprintf on older MSVC versions (Nick Wellnhofer),
    Add Python script to run some tests on Windows (Nick Wellnhofer),
    Remove /OPT:NOWIN98 option (Nick Wellnhofer),
    Visual Studio 14 CTP defines snprintf() (Daniel Veillard),
    Use AC_PATH_TOOL to find libgcrypt-config and xml2-config (Micha Grny),
    Use $libdir for LIBXSLT_DEFAULT_PLUGINS_PATH (larryhaja),
    Use mkdir macro also in case if mingw32. (Lars Kanis),
    Add math library to executable link flags (Nick Wellnhofer),
    Fix quoting of xlocale test program in configure.in (Nick Wellnhofer)
  • Bug Fixes:
    Fix OOB heap read in xsltExtModuleRegisterDynamic (Nick Wellnhofer),
    Remove CDATA markup from libxslt_tutorial.c (Nick Wellnhofer),
    Remove generated headers from dist tarball (Nick Wellnhofer),
    Mark XML file argument as repeatable (Nick Wellnhofer),
    Keep timezone in date:add (Nick Wellnhofer),
    Fix buffer overflow in exsltDateFormat (Nick Wellnhofer),
    Fix saxon:line-number with namespace nodes (Nick Wellnhofer),
    Fix dyn:map with namespace nodes (Nick Wellnhofer),
    Fix error handling in Saxon extension functions (Nick Wellnhofer),
    Fix double free in libexslt hash functions (Nick Wellnhofer),
    Fix libxslt format warnings (David Kilzer),
    Fix xsltNumberFormatGetMultipleLevel (Nick Wellnhofer),
    Fix use-after-free in xsltDocumentFunctionLoadDocument (Nick Wellnhofer),
    Always initialize EXSLT month and day to 1 (Nick Wellnhofer),
    Fix possible NULL pointer deref in transform.c (mahendra.n),
    Fix possible NULL pointer deref in xsltCopyTextString (Nick Wellnhofer),
    Fix possible NULL pointer deref in libexslt/functions.c (Nick Wellnhofer),
    Fix possible NULL pointer deref in xsltproc.c (mahendra.n),
    Fix possible NULL pointer deref in preproc.c (mahendra.n),
    Fix LIBXSLT_DEFAULT_PLUGINS_PATH in xsltconfig.h (Nick Wellnhofer),
    Fix memory leak in xsltNumberFormat (Albert Astals Cid),
    Error in doc/Makefile.am (Brice De Bruyne),
    Detect attribute sets recursions in more cases (Daniel Veillard),
    Check name vales for attribute-set elements (Daniel Veillard),
    Fix hang with namespace-alias, fixes #700689 (Shaun McCance),
    Fix str:align with UTF-8 strings (Nick Wellnhofer),
    Fix for compiled XPath helpers (Nick Wellnhofer),
    Check return value of exsltFuncNewFunctionData (Nick Wellnhofer),
    Fix return value of xsltRegisterExtModuleElement (Nick Wellnhofer),
    Call xmlNodeGetSpacePreserve with element node (Nick Wellnhofer),
    Set namespaces before evaluating xsl:number (Nick Wellnhofer),
    Make --maxvars option work (Per Hedeland),
    Set correct context node when initializing xsl:keys (Nick Wellnhofer),
    Fix for bug 436589 (Imran Azeezullah),
    Memory leak in xsltCompileIdKeyPattern error path (Nick Wellnhofer),
    Fix handling of UTF-8 strings in EXSLT crypto module (Nick Wellnhofer),
    Fix certain patterns with predicates (Nick Wellnhofer),
    Fix direct pattern matching (Nick Wellnhofer),
    Fix str:padding to work with UTF-8 strings (Nick Wellnhofer),
    EXSLT function str:replace() is broken as-is (Nick Wellnhofer),
    Fix a couple of places where (f)printf parameters were broken (Daniel Veillard)
  • Improvements:
    Add support timestamps from environment (Daniel Veillard),
    Add missing tests to dist tarball (Nick Wellnhofer),
    Improve error message in xsltAddTemplate and fix test (Nick Wellnhofer),
    Allow REC tests with empty stdout (Nick Wellnhofer),
    Fix GPL license in HTML files as well (Nick Wellnhofer),
    Fix status message in EXSLT dynamic tests (Nick Wellnhofer),
    Add public function macros to xsltlocale.h (Nick Wellnhofer),
    Make valgrind tests work with libtool (Nick Wellnhofer),
    Add a couple of xsl:number tests (Nick Wellnhofer),
    Lower and upper bound for format token "i" (Nick Wellnhofer),
    Lower bound for format token "a" (Nick Wellnhofer),
    Handle negative xsl:number values (Nick Wellnhofer),
    Round xsl:number values to nearest integer (Nick Wellnhofer),
    Allow {URI}NCName syntax for user parameters (Nick Wellnhofer),
    Fix endTimer parameter type (Nick Wellnhofer),
    Fix error messages for unsupported methods (Nick Wellnhofer),
    Replace sprintf with snprintf (David Kilzer),
    Enforce two digit exponent under MSVC (Nick Wellnhofer),
    Rework xsltNumberFormat to fix warning (Nick Wellnhofer),
    Fix a couple of GPL licences found in the documentation (Daniel Veillard),
    Use hash table to lookup named templates (Christian Ceelen),
    Fix to reg tests post 737840 fix (Daniel Veillard),
    Don't fail build the man page if xsltproc is not present (Daniel Veillard),
    Re-adding xsltproc.1 (Daniel Veillard),
    Fix time type in xsltSaveProfiling (Nick Wellnhofer),
    Remove unused parameters (Nick Wellnhofer),
    Suppress unused variable warning. (Nick Wellnhofer),
    Remove unused variable in xsltGenerateIdFunction (Nick Wellnhofer),
    Add test case for XPath function args in error case (Nick Wellnhofer),
    Add comment about known-to-fail test (Nick Wellnhofer),
    Adjust expected test output (Nick Wellnhofer),
    Helper functions to evaluate compiled XPath expressions (Nick Wellnhofer),
    Add tests for crypto:rc4 (Nick Wellnhofer),
    Add first test case for EXSLT crypto module (Nick Wellnhofer),
    Separate function for predicate matching in patterns (Nick Wellnhofer),
    Initialize pseudo random number generator with current time or optional command line parameter (Nils Werner),
    Adding doc update related to 1.1.28 (Daniel Veillard)
  • Cleanups:
    Remove bogus test file (Nick Wellnhofer),
    Add warning message to expected test output (Nick Wellnhofer)

1.1.28: Nov 21 2012

  • Portability:
    Fix python build by using libxsltmod_la_CPPFLAGS instead of AM_CPPFLAGS (Alexandre Rostovtsev),
    configure should be more careful with linker script (Igor Pashev),
    add gcrypt library in LIBADD, not LDFLAGS, as recommended (Roumen Petrov)
  • Bug fixes:
    Fix generate-id() to avoid generating the same ID (Stewart Brodie),
    Fix crash with empty xsl:key/@match attribute (Nick Wellnhofer),
    Crash when passing an uninitialized variable to document() (Nick Wellnhofer),
    Add missing test docs to EXTRA_DIST (Nick Wellnhofer),
    Fix regression: Default namespace not correctly used (Nick Wellnhofer)
  • Cleanups:
    Remove xsltTransStorageAdd and xsltTransStorageRemove from symbols.xml (Daniel Veillard),
    autogen.sh cleanup (Daniel Richard),
    consistent use of xslt processor (Roumen Petrov),
    Add object files in tests/plugins to .gitignore (Nick Wellnhofer),
    Fix error on bug-165 regression test (Daniel Veillard),
    Remove xsltTransStorageAdd and xsltTransStorageRemove (Daniel Veillard),

1.1.27: Sep 12 2012

  • Portability:
    xincludestyle wasn't protected with LIBXML_XINCLUDE_ENABLED (Michael Bonfils),
    Portability fix for testThreads.c (IlyaS),
    FreeBSD portability fixes (Pedro F. Giffuni),
    check for gmtime - on mingw* hosts will enable date-time function (Roumen Petrov),
    use only native crypto-API for mingw* hosts (Roumen Petrov),
    autogen: Only check for libtoolize (Colin Walters),
    minimal mingw support (Roumen Petrov),
    configure: acconfig.h is deprecated since autoconf-2.50 (Stefan Kost),
    Fix a small out of tree compilation issue (Hao Hu),
    Fix python generator to not use deprecated xmllib (Daniel Veillard),
    link python module with python library (Frederic Crozat)
  • Documentation:
    Tiny doc improvement (Daniel Veillard),
    Various documentation fixes for docs on internals (C. M. Sperberg-McQueen)
  • Bug fixes:
    Report errors on variable use in key (Daniel Veillard),
    The XSLT namespace string is a constant one (Daniel Veillard),
    Fix handling of names in xsl:attribute (Nick Wellnhofer),
    Reserved namespaces in xsl:element and xsl:attribute (Nick Wellnhofer),
    Null-terminate result string of cry:rc4_decrypt (Nick Wellnhofer),
    EXSLT date normalization fix (James Muscat),
    Exit after compilation of invalid func:result (Nick Wellnhofer),
    Fix for EXSLT func:function (Nick Wellnhofer),
    Rewrite EXSLT string:replace to be conformant (Nick Wellnhofer),
    Avoid a heap use after free error (Chris Evans),
    Fix a dictionary string usage (Chris Evans),
    Output should not include extraneous newlines when indent is off (Laurence Rowe),
    document('') fails to return stylesheets parsed from memory (Jason Viers),
    xsltproc should return an error code if xinclude fails (Malcolm Purvis),
    Forwards-compatible processing of unknown top level elements (Nick Wellnhofer),
    Fix system-property with unknown namespace (Nick Wellnhofer),
    Hardening of code checking node types in EXSLT (Daniel Veillard),
    Hardening of code checking node types in various entry point (Daniel Veillard),
    Cleanup of the pattern compilation code (Daniel Veillard),
    Fix default template processing on namespace nodes (Daniel Veillard),
    Fix a bug in selecting XSLT elements (Daniel Veillard),
    Fixed bug #616839 (Daniel Mustieles),
    Fix some case of pattern parsing errors (Abhishek Arya),
    preproc: fix the build (Stefan Kost),
    Fix a memory leak with xsl:number (Daniel Veillard),
    Fix a problem with ESXLT date:add() with January (money_seshu Dronamraju),
    Fix a memory leak if compiled with Windows locale support (Daniel Veillard),
    Fix generate-id() to not expose object addresses (Daniel Veillard),
    Fix curlies support in literals for non-compiled AVTs (Nick Wellnhofer),
    Allow whitespace in xsl:variable with select (Nick Wellnhofer),
    Small fixes to locale code (Nick Wellnhofer),
    Fix bug 602515 (Nick Wellnhofer),
    Fix popping of vars in xsltCompilerNodePop (Nick Wellnhofer),
    Fix direct pattern matching bug (Nick Wellnhofer)
  • Improvements:
    Add the saxon:systemId extension (Mike Hommey),
    Add an append mode to document output (Daniel Veillard),
    Add new tests to EXTRA_DIST (Nick Wellnhofer),
    Test for bug #680920 (Nick Wellnhofer),
    fix regresson in Various "make distcheck" and other fixes (Roumen Petrov),
    Various "make distcheck" and other fixes (Daniel Richard G),
    Fix portability to upcoming libxml2-2.9.0 (Daniel Veillard),
    Adding --system flag support to autogen.sh (Daniel Veillard),
    Allow per-context override of xsltMaxDepth, introduce xsltMaxVars (Jrme Carretero),
    autogen.sh: Honor NOCONFIGURE environment variable (Colin Walters),
    configure: support silent automake rules if possible (Stefan Kost),
    Precompile patterns in xsl:number (Nick Wellnhofer),
    Fix some warnings in the refactored code (Nick Wellnhofer),
    Adding new generated files (Daniel Veillard),
    profiling: add callgraph report (Stefan Kost)
  • Cleanups:
    Big space and tabs cleanup (Daniel Veillard),
    Fix authors list (Daniel Veillard),
    Cleanups some of the test makefiles (Daniel Richard),
    Remove .cvsignore files which are not needed anymore (Daniel Veillard),
    Cleanup some misplaced spaces and tabs (Daniel Veillard),
    Augment list of ignored files (Daniel Veillard),
    configure: remove checks for isinf and isnan as those are not used anyway (Stefan Kost),
    Point to GIT for source code and a bit of cleanup (Daniel Veillard),
    Get rid of specific build setup and STATIC_BINARIES (Daniel Veillard)

1.1.26: Sep 24 2009

  • Improvement: Add xsltProcessOneNode to exported symbols for lxml (Daniel Veillard)
  • Bug fixes: Fix an idness generation problem (Daniel Veillard), 595612 Try to fix some locking problems (Daniel Veillard), Fix a crash on misformed imported stylesheets (Daniel Veillard)

1.1.25: Sep 17 2009

  • Features: Add API versioning and various cleanups (Daniel Veillard), xsl:sort lang support using the locale (Nick Wellnhofer and Roumen Petrov)
  • Documentation: Fix the download links for Solaris (Daniel Veillard), Fix makefile and spec file to include doc in rpm (Daniel Veillard)
  • Portability: Make sure testThreads is linked with pthreads (Daniel Veillard), Fix potential crash on debug of extensions Solaris (Ben Walton), applied patch from Roumen Petrov for mingw cross compilation problems (Roumen Petrov), patch from Richard Jones to build shared libs with MinGW cross-compiler (Richard Jones), fix include path when compiling with MinGW (Roumen Petrov), portability fixes ( Nick Wellnhofer and Roumen Petrov)
  • Bug fixes: Big fixes of pattern compilations (Nick Wellnhofer), Fix uses of xmlAddChild for error handling (Daniel Veillard), Detect deep recusion on function calls (Daniel Veillard), Avoid an error in namespace generation (Martin), Fix importing of encoding from included stylesheets (Nick Wellnhofer), Fix problems with embedded stylesheets and namespaces (Martin), QName parsing fix for patterns (Martin), Crash compiling stylesheet with DTD (Martin), Fix xsl:strip-space with namespace and wildcard (Nick Wellnhofer), Fix a mutex deadlock on unregistered extensions (Nix), 567192 xsltproc --output option ignore --xinclude (Joachim Breitner), Fix redundant headers in list (Daniel Veillard), 134754 Configure's --with-html-dir related fixes (Julio M. Merino Vidal), 305913 a serious problem in extensions reentrancy (Daniel Veillard), Fix an idness issue when building the tree (Daniel Veillard), Fixed indexing error reported by Ron Burk on the mailing list. (William M. Brack), prevent some unchecked pointer accesses (Jake Goulding), fix for CVE-2008-2935 libexslt RC4 encryption/decryption functions Daniel (Daniel Veillard), avoid a quadratic behaviour when hitting duplicates (Daniel Veillard), 544829 fixed option --with-debugger (Arun Ragnavan), 541965 fixed incorrect argument popping in exsltMathAtan2Function (William M. Brack), fix problem with string check for element-available (Ron Burk), 539741 added code to handle literal within an AVT (William M. Brack)
  • Improvements: Allow use of EXSLT outside XSLT (Martin), Support Esperanto locale (Nick Wellnhofer), Change how attributes are copied for id and speed (Daniel Veillard), Add API versioning and various cleanups (Daniel Veillard), Adding a test program to check thread reentrancy (Daniel Veillard), big patch from finishing xsl:sort lang support (Roumen Petrov), add xsl:sort lang support using the locale (Nick Wellnhofer)
  • Cleanups: Label xsltProcessOneNode as static (Daniel Veillard), git setup (Daniel Veillard), fixed typo detected by new libxml2 code (William M. Brack), xsltExtFunctionLookup was defined but never implemented (Ralf Junker)

1.1.24: May 13 2008

  • Documentation: man page fix (Vincent Lefevre).
  • Bug fixes: pattern bug fix, key initialization problems, exclusion of unknown namespaced element on top of stylesheets, python generator syntactic cleanup (Martin)

1.1.23: Apr 8 2008

  • Documentation: fix links for Cygwin DocBook setup (Philippe Bourcier), xsltParseStylesheetDoc doc fix (Jason Viers), fix manpage default maxdepth value
  • Bug fixes: python segfault (Daniel Gryniewicz), week-in-year bug fix (Maurice van der Pot), fix python iterator problem (William Brack), avoid garbage collection problems on str:tokenize and str:split and function results (William Brack and Peter Pawlowski) superfluous re-generation of keys (William Brack), remove superfluous code in xsltExtInitTest (Tony Graham), func:result segfault fix (William Brack), timezone offset problem (Peter Pawlowski),
  • Portability fixes: old gcrypt support fix (Brent Cowgill), Python portability patch (Stephane Bidoul), VS 2008 fix (Rob Richard)

1.1.22: Aug 23 2007

  • Bug fixes: RVT cleanup problems (William Brack), exclude-result-prefix bug (William Brack), stylesheet compilation error handling (Rob Richards).
  • Portability fixes: improve build with VS2005 (Rob Richards), fixing build on AIX (Bjorn Wiberg), fix the security file checks on Windows (Roland Schwarz and Rob Richards).
  • Improvement: add an --encoding option to xsltproc (Drazen Kacar).

1.1.21: Jun 12 2007

  • Bug fixes: out of memory allocation errors (William Brack), namespace problem on compound predicates (William Brack), python space/tab inconsistencies (Andreas Hanke), hook xsl:message to per transformation error callbacks (Shaun McCance), cached RVT problem (William Brack), XPath context maintainance on choose (William Brack), memory leaks in the math module (William Brack), exclude-result-prefix induced namespace problem (William Brack)
  • Build: configure setup for TRIO_REPLACE_STDIO (William Brack)
  • Documentation: updated after change from CVs to SVN (William Brack)

1.1.20: Jan 17 2007

  • Portability fixes: strict aliasing fix (Marcus Meissner), BSD portability patches (Roland Illig)
  • Bug fixes: Result Value Tree handling fix (William Brack), function parameters fix (William), uninitialized variable (Kjartan Maraas), empty text node handling (William), plugin support and test fixes (William), fragment support fixes (William)
  • Improvements: python stylesheet compare and transform context access (Nic Ferrier), EXSLT string replace support (Joel Reed), xsltproc better low level error handling (Mike Hommey and William)

1.1.19: Nov 29 2006

  • Bug fixes: entities within attributes (William Brack), Python detection problem (Joseph Sacco), in-scope namespace bug (Mike Hommey), Result value tree caching bug (William Brack)

1.1.18: Oct 26 2006

  • portability and build fixes: DESTDIR problem, build paths in python shared lib, compile when libxml2 doesn't support XInclude (Gary Coady).
  • bug fixes: a number of namespace related bugs (Kasimier Buchcik), parameters bugs (Kasimier Buchcik), proximity position in predicates of match patterns (Kasimier), exslt-node-set troubles with strings (Kasimier), CDATA serialization, Python floats and booleans XPath conversions, XInclude support fixes, RVT cleanup problem (William Brack and Kasimier), attribute checking in stylesheets (Kasimier), xsltForEach context problem (Kasimier), security check should pass full URLs (Shane Corgatelli), security cleanup patch (Mikhail Zabaluev), some python accessor for stylesheet were broken, memory errors when compiling stylesheets (Mike Hommey), EXSLT current date end-of-month problem (William Brack).
  • improvements: refactoring of namespace handling, value-of impleemntation and template internal processing (Kasimier Buchcik), new xsltproc flag to apply Xinclude to stylesheets.
  • documentation: xsltproc man pages (Daniel Leidert), tests updates (William Brack), various typo fixes (Daniel Leidert), comments on versions macros (Peter Breitenlohner).

1.1.17: Jun 6 2006

  • portability fixes: python detection
  • bug fixes: some regression tests, attribute/namespaces output (Kasimier Buchcik), problem in mixed xsl:value-of and xsl:text uses (Kasimier)
  • improvements: internal refactoring (Kasimier Buchcik), use of the XPath object cache in libxml2-2.6.25 (Kasimier)

1.1.16: May 01 2006

  • portability fixes: EXSLT date/time on Solaris and IRIX (Albert Chin), HP-UX build (Albert Chin),
  • build fixes: Python detection(Joseph Sacco), plugin configurei (Joel Reed)
  • bug fixes: pattern compilation fix(William Brack), EXSLT date/time fix (Thomas Broyer), EXSLT function bug, potential loop on variable eval, startup race (Christopher Palmer), debug statement left in python (Nic Ferrier), various cleanup based on Coverity reports), error on Out of memory condition (Charles Hardin), various namespace prefixes fixes (Kasimier Buchcik),
  • improvement: speed up sortingi, start of internals refactoring (Kasimier Buchcik)
  • documentation: man page fixes and updates (Daniel Leidert)

1.1.15: Sep 04 2005

  • build fixes: Windows build cleanups and updates (Igor Zlatkovic), remove jhbuild warnings
  • bug fixes: negative number formatting (William Brack), number formatting per mille definition (William Brack), XInclude default values (William), text copy bugs (William), bug related to xmlXPathContext size, reuse libxml2 memory management for text nodes, dictionary text bug, forbid variables in match (needs libxml2-2.6.21)
  • improvements: EXSLT dyn:map (Mark Vakoc),
  • documentation: EXSLT date and time functions namespace in man (Jonathan Wakely)

1.1.14: Apr 02 2005

  • bug fixes: text node on stylesheet document without a dictionary (William Brack), more checking of XSLT syntax, calling xsltInit() multiple times, mode values interning raised by Mark Vakoc, bug in pattern matching with ancestors, bug in patterna matching with cascading select, xinclude and document() problem, build outside of source tree (Mike Castle)
  • improvement: added a --nodict mode to xsltproc to check problems for docuemtns without dictionaries

1.1.13: Mar 13 2005

  • build fixes: 64bits cleanup (William Brack), python 2.4 test (William), LIBXSLT_VERSION_EXTRA on Windows (William), Windows makefiles fixes (Joel Reed), libgcrypt-devel requires for RPM spec.
  • bug fixes: exslt day-of-week-in-month (Sal Paradise), xsl:call-template should not change the current template rule (William Brack), evaluation of global variables (William Brack), RVT's in XPath predicates (William), namespace URI on template names (Mark Vakoc), stat() for Windows patch (Aleksey Gurtovoy), pattern expression fixes (William Brack), out of memory detection misses (William), parserOptions propagation (William), exclude-result-prefixes fix (William), // patten fix (William).
  • extensions: module support (Joel Reed), dictionary based speedups trying to get rid of xmlStrEqual as much as possible.
  • documentation: added Wiki (Joel Reed)

1.1.12: Oct 29 2004

  • build fixes: warnings removal (William).
  • bug fixes: attribute document pointer fix (Mark Vakoc), exslt date negative periods (William Brack), generated tree structure fixes, namespace lookup fix, use reentrant gmtime_r (William Brack), exslt:funtion namespace fix (William), potential NULL pointer reference (Dennis Dams, William), force string interning on generated documents.
  • documentation: update of the second tutorial (Panagiotis Louridas), add exslt doc in rpm packages, fix the xsltproc man page.

1.1.11: Sep 29 2004

  • bug fixes: xsl:include problems (William Brack), UTF8 number pattern (William), date-time validation (William), namespace fix (William), various Exslt date fixes (William), error callback fixes, leak with namespaced global variable, attempt to fix a weird problem #153137
  • improvements: exslt:date-sum tests (Derek Poon)
  • documentation: second tutorial by Panagiotis Lourida

1.1.10: Aug 31 2004

  • build fix: NUL in c file blocking compilation on Solaris, Windows build (Igor Zlatkovic)
  • fix: key initialization problem (William Brack)
  • documentation: fixed missing man page description for --path

1.1.9: Aug 22 2004

  • build fixes: missing tests (William Brack), Python dependancies, Python on 64bits boxes, --with-crypto flag (Rob Richards),
  • fixes: RVT key handling (William), Python binding (William and Sitsofe Wheeler), key and XPath troubles (William), template priority on imports (William), str:tokenize with empty strings (William), #default namespace alias behaviour (William), doc ordering missing for main document (William), 64bit bug (Andreas Schwab)
  • improvements: EXSLT date:sum added (Joel Reed), hook for document loading for David Hyatt, xsltproc --nodtdattr to avoid defaulting DTD attributes, extend xsltproc --version with CVS stamp (William).
  • Documentation: web page problem reported by Oliver Stoeneberg

1.1.8: July 5 2004

  • build fixes: Windows runtime options (Oliver Stoeneberg), Windows binary package layout (Igor Zlatkovic), libgcrypt version test and link (William)
  • documentation: fix libxslt namespace name in doc (William)
  • bug fixes: undefined namespace message (William Brack), search engine (William), multiple namespace fixups (William), namespace fix for key evaluation (William), Python memory debug bindings,
  • improvements: crypto extensions for exslt (Joel Reed, William)

1.1.7: May 17 2004

  • build fix: warning about localtime_r on Solaris
  • bug fix: UTF8 string tokenize (William Brack), subtle memory corruption, linefeed after comment at document level (William), disable-output-escaping problem (William), pattern compilation in deep imported stylesheets (William), namespace extension prefix bug, libxslt.m4 bug (Edward Rudd), namespace lookup for attribute, namespaced DOCTYPE name

1.1.6: Apr 18 2004

  • 2 bug fixes about keys fixed one by Mark Vakoc

1.1.5: Mar 23 2004

  • performance: use dictionary lookup for variables
  • remove use of _private from source documents
  • cleanup of "make tests" output
  • bugfixes: AVT in local variables, use localtime_r to avoid thread troubles (William), dictionary handling bug (William), limited number of stubstitutions in AVT (William), tokenize fix for UTF-8 (William), superfluous namespace (William), xsltproc error code on <xsl:message> halt, OpenVMS fix, dictionary reference counting change.

1.1.4: Feb 23 2004

  • bugfixes: attributes without doc (Mariano Surez-Alvarez), problem with Yelp, extension problem
  • display extension modules (Steve Little)
  • Windows compilation patch (Mark Vadoc), Mingw (Mikhail Grushinskiy)

1.1.3: Feb 16 2004

  • Rewrote the Attribute Value Template code, new XPath compilation interfaces, dictionary reuses for XSLT with potential for serious performance improvements.
  • bug fixes: portability (William Brack), key() in node-set() results (William), comment before doctype (William), math and node-set() problems (William), cdata element and default namespace (William), behaviour on unknown XSLT elements (Stefan Kost), priority of "//foo" patterns (William), xsl:element and xsl:attribute QName check (William), comments with -- (William), attribute namespace (William), check for ?> in PI (William)
  • Documentations: cleanup (John Fleck and William)
  • Python: patch for OS-X (Gianni Ceccarelli), enums export (Stephane bidoul)

1.1.2: Dec 24 2003

  • Documentation fixes (John Fleck, William Brack), EXSLT documentation (William Brack)
  • Windows compilation fixes for MSVC and Mingw (Igor Zlatkovic)
  • Bug fixes: exslt:date returning NULL strings (William Brack), namespaces output (William Brack), key and namespace definition problem, passing options down to the document() parser, xsl:number fixes (William Brack)

1.1.1: Dec 10 2003

  • code cleanup (William Brack)
  • Windows: Makefile improvements (Igor Zlatkovic)
  • documentation improvements: William Brack, libexslt man page (Jonathan Wakely)
  • param in EXSLT functions (Shaun McCance)
  • XSLT debugging improvements (Mark Vakoc)
  • bug fixes: number formatting (Bjorn Reese), exslt:tokenize (William Brack), key selector parsing with | reported by Oleg Paraschenko, xsl:element with computed namespaces (William Brack), xslt:import/include recursion detection (William Brack), exslt:function used in keys (William Brack), bug when CDATA_SECTION are foun in the tree (William Brack), entities handling when using XInclude.

1.1.0: Nov 4 2003

  • Removed DocBook SGML broken support
  • fix xsl:key to work with PIs
  • Makefile and build improvement (Graham Wilson), build cleanup (William Brack), macro fix (Justin Fletcher), build outside of source tree (Roumen Petrov)
  • xsltproc option display fix (Alexey Efimov), --load-trace (Crutcher Dunnavant)
  • Python: never use stdout for error
  • extension memory error fix (Karl Eichwalder)
  • header path fixes (Steve Ball)
  • added saxon:line-number() to libexslt (Brett Kail)
  • Fix some tortuous template problems when using predicates (William Brack)
  • Debugger status patch (Kasimier Buchcik)
  • Use new libxml2-2.6.x APIs for faster processing
  • Make sure xsl:sort is empty
  • Fixed a bug in default processing of attributes
  • Removes the deprecated breakpoint library
  • detect invalid names on templates (William Brack)
  • fix exslt:document (and similar) base handling problem

1.0.33: Sep 12 2003

This is a bugfix only release

  • error message missing argument (William Brack)
  • mode not cascaded in template fallbacks (William Brack)
  • catch redefinition of parameter/variables (William Brack)
  • multiple keys with same namespace name (William Brack)
  • patch for compilation using MingW on Windows (Mikhail Grushinskiy)
  • header export macros for Windows (Igor Zlatkovic)
  • cdata-section-elements handling of namespaced names
  • compilation without libxml2 XPointer support (Mark Vadoc)
  • apply-templates crash (William Brack)
  • bug with imported templates (William Brack)
  • imported attribute-sets merging bug (DocBook) (William Brack)

1.0.32: Aug 9 2003

  • bugfixes: xsltSaveResultToFile() python binding (Chris Jaeger), EXSLT function (William Brack), RVT for globals (William Brack), EXSLT date (William Brack),

    speed of large text output, xsl:copy with attributes, strip-space and namespaces prefix, fix for --path xsltproc option, EXST:tokenize (Shaun McCance), EXSLT:seconds (William Brack), sort with multiple keys (William Brack), checking of { and } for attribute value templates (William Brack)

  • Python bindings for extension elements (Sean Treadway)
  • EXSLT:split added (Shaun McCance)
  • portability fixes for HP-UX/Solaris/IRIX (William Brack)
  • doc cleanup

1.0.31: Jul 6 2003

  • bugfixes: xsl:copy on namespace nodes, AVT for xsl:sort order, fix for the debugger (Keith Isdale), output filename limitation, trio.h and triodef.h added (Albert Chin), EXSLT node-set (Peter Breitenlohner), xsltChoose and whitespace (Igor Zlatkovic),

    stylesheet compilation (Igor Zlatkovic), NaN and sort (William Brack), RVT bug introduced in 1.0.30

  • avoid generating &quot; (fix in libxml2-2.5.8)
  • fix 64bit cleaness problem and compilation troubles introduced in 1.0.30
  • Windows makefile generation (Igor Zlatkovic)
  • HP-UX portability fix

1.0.30: May 4 2003

  • Fixes and new APIs to handle Result Value Trees and avoid leaks
  • Fixes for: EXSLT math pow() function (Charles Bozeman), global parameter and global variables mismatch, a segfault on pattern compilation errors, namespace copy in xsl:copy-of, python generator problem, OpenVMS trio update, premature call to xsltFreeStackElem (Igor), current node when templates applies to attributes

1.0.29: Apr 1 2003

  • performance improvements especially for large flat documents
  • bug fixes: Result Value Tree handling, XML IDs, keys(), extra namespace declarations with xsl:elements.
  • portability: python and trio fixes (Albert Chin), python on Solaris (Ben Phillips)

1.0.28: Mar 24 2003

  • fixed node() in patterns semantic.
  • fixed a memory access problem in format-number()
  • fixed stack overflow in recursive global variable or params
  • cleaned up Result Value Tree handling, and fixed a couple of old bugs in the process

1.0.27: Feb 24 2003

  • bug fixes: spurious xmlns:nsX="" generation, serialization bug (in libxml2), a namespace copy problem, errors in the RPM spec prereqs
  • Windows path canonicalization and document cache fix (Igor)

1.0.26: Feb 10 2003

  • Fixed 3 serious bugs in document() and stylesheet compilation which could lead to a crash

1.0.25: Feb 5 2003

  • Bug fix: double-free for standalone stylesheets introduced in 1.0.24, C syntax pbm, 3 bugs reported by Eric van der Vlist
  • Some XPath and XInclude related problems were actually fixed in libxml2-2.5.2
  • Documentation: emphasize taht --docbook is not for XML docs.

1.0.24: Jan 14 2003

  • bug fixes: imported global varables, python bindings (Stphane Bidoul), EXSLT memory leak (Charles Bozeman), namespace generation on xsl:attribute, space handling with imports (Daniel Stodden), extension-element-prefixes (Josh Parsons), comments within xsl:text (Matt Sergeant), superfluous xmlns generation, XInclude related bug for numbering, EXSLT strings (Alexey Efimov), attribute-sets computation on imports, extension module init and shutdown callbacks not called
  • HP-UX portability (Alexey Efimov), Windows makefiles (Igor and Stephane Bidoul), VMS makefile updates (Craig A. Berry)
  • adds xsltGetProfileInformation() (Michael Rothwell)
  • fix the API generation scripts
  • API to provide the sorting routines (Richard Jinks)
  • added XML description of the EXSLT API
  • added ESXLT URI (un)escaping (Jrg Walter)
  • Some memory leaks have been found and fixed
  • document() now support fragment identifiers in URIs

1.0.23: Nov 17 2002

  • Windows build cleanup (Igor)
  • Unix build and RPM packaging cleanup
  • Improvement of the python bindings: extension functions and activating EXSLT
  • various bug fixes: number formatting, portability for bounded string functions, CData nodes, key(), @*[...] patterns
  • Documentation improvements (John Fleck)
  • added libxslt.m4 (Thomas Schraitle)

1.0.22: Oct 18 2002

  • Updates on the Windows Makefiles
  • Added a security module, and a related set of new options to xsltproc
  • Allowed per transformation error handler.
  • Fixed a few bugs: node() semantic, URI escaping, media-type, attribute lists

1.0.21: Sep 26 2002

  • Bug fixes: match="node()", date:difference() (Igor and Charlie Bozeman), disable-output-escaping
  • Python bindings: style.saveResultToString() from Ralf Mattes
  • Logos from Marc Liyanage
  • Mem leak fix from Nathan Myers
  • Makefile: DESTDIR fix from Christophe Merlet, AMD x86_64 (Mandrake), Windows (Igor), Python detection
  • Documentation improvements: John Fleck

1.0.20: Aug 23 2002

  • Windows makefile updates (Igor) and x86-64 (Frederic Crozat)
  • fixed HTML meta tag saving for Mac/IE users
  • possible leak patches from Nathan Myers
  • try to handle document('') as best as possible depending in the cases
  • Fixed the DocBook stylesheets handling problem
  • Fixed a few XSLT reported errors

1.0.19: July 6 2002

  • EXSLT: dynamic functions and date support bug fixes (Mark Vakoc)
  • xsl:number fix: Richard Jinks
  • xsl:format-numbers fix: Ken Neighbors
  • document('') fix: bug pointed by Eric van der Vlist
  • xsl:message with terminate="yes" fixes: William Brack
  • xsl:sort order support added: Ken Neighbors
  • a few other bug fixes, some of them requiring the latest version of libxml2

1.0.18: May 27 2002

  • a number of bug fixes: attributes, extra namespace declarations (DocBook), xsl:include crash (Igor), documentation (Christian Cornelssen, Charles Bozeman and Geert Kloosterman), element-available (Richard Jinks)
  • xsltproc can now list teh registered extensions thanks to Mark Vakoc
  • there is a new API to save directly to a string xsltSaveResultToString() by Morus Walter
  • specific error registration function for the python API

1.0.17: April 29 2002

  • cleanup in code, XSLT debugger support and Makefiles for Windows by Igor
  • a C++ portability fix by Mark Vakoc
  • EXSLT date improvement and regression tests by Charles Bozeman
  • attempt to fix a bug in xsltProcessUserParamInternal

1.0.16: April 15 2002

  • Bug fixes: strip-space, URL in HTML output, error when xsltproc can't save
  • portability fixes: OSF/1, IEEE on alphas, Windows, Python bindings

1.0.15: Mar 25 2002

  • Bugfixes: XPath, python Makefile, recursive attribute sets, @foo[..] templates
  • Debug of memory alocation with valgind
  • serious profiling leading to significant improvement for DocBook processing
  • revamp of the Windows build

1.0.14: Mar 18 2002

  • Improvement in the XPath engine (libxml2-2.4.18)
  • Nasty bug fix related to exslt:node-set
  • Fixed the python Makefiles, cleanup of doc comments, Windows portability fixes

1.0.13: Mar 8 2002

  • a number of bug fixes including "namespace node have no parents"
  • Improvement of the Python bindings
  • Charles Bozeman provided fixes and regression tests for exslt date functions.

1.0.12: Feb 11 2002

  • Fixed the makefiles especially the python module ones
  • half a dozen bugs fixes including 2 old ones

1.0.11: Feb 8 2002

  • Change of Licence to the MIT Licence
  • Added a beta version of the Python bindings, including support to extend the engine with functions written in Python
  • A number of bug fixes
  • Charlie Bozeman provided more EXSLT functions
  • Portability fixes

1.0.10: Jan 14 2002

  • Windows fixes for Win32 from Igor
  • Fixed the Solaris compilation trouble (Albert)
  • Documentation changes and updates: John Fleck
  • Added a stringparam option to avoid escaping hell at the shell level
  • A few bug fixes

1.0.9: Dec 7 2001

  • Makefile patches from Peter Williams
  • attempt to fix the compilation problem associated to prelinking
  • obsoleted libxsltbreakpoint now deprecated and frozen to 1.0.8 API
  • xsltproc return codes are now significant, John Fleck updated the documentation
  • patch to allow as much as 40 steps in patterns (Marc Tardif), should be made dynamic really
  • fixed a bug raised by Nik Clayton when using doctypes with HTML output
  • patches from Keith Isdale to interface with xsltdebugger

1.0.8: Nov 26 2001

  • fixed an annoying header problem, removed a few bugs and some code cleanup
  • patches for Windows and update of Windows Makefiles by Igor
  • OpenVMS port instructions from John A Fotheringham
  • fixed some Makefiles annoyance and libraries prelinking information

1.0.7: Nov 10 2001

  • remove a compilation problem with LIBXSLT_PUBLIC
  • Finishing the integration steps for Keith Isdale debugger
  • fixes the handling of indent="no" on HTML output
  • fixes on the configure script and RPM spec file

1.0.6: Oct 30 2001

  • bug fixes on number formatting (Thomas), date/time functions (Bruce Miller)
  • update of the Windows Makefiles (Igor)
  • fixed DOCTYPE generation rules for HTML output (me)

1.0.5: Oct 10 2001

  • some portability fixes, including Windows makefile updates from Igor
  • fixed a dozen bugs on XSLT and EXSLT (me and Thomas Broyer)
  • support for Saxon's evaluate and expressions extensions added (initial contribution from Darren Graves)
  • better handling of XPath evaluation errors

1.0.4: Sep 12 2001

  • Documentation updates from John fleck
  • bug fixes (DocBook FO generation should be fixed) and portability improvements
  • Thomas Broyer improved the existing EXSLT support and added String, Time and Date core functions support

1.0.3: Aug 23 2001

  • XML Catalog support see the doc
  • New NaN/Infinity floating point code
  • A few bug fixes

1.0.2: Aug 15 2001

  • lot of bug fixes, increased the testsuite
  • a large chunk of EXSLT is implemented
  • improvements on the extension framework
  • documentation improvements
  • Windows MSC projects files should be up-to-date
  • handle attributes inherited from the DTD by default

1.0.1: July 24 2001

  • initial EXSLT framework
  • better error reporting
  • fixed the profiler on Windows
  • bug fixes

1.0.0: July 10 2001

  • a lot of cleanup, a lot of regression tests added or fixed
  • added a documentation for writing extensions
  • fixed some variable evaluation problems (with William)
  • added profiling of stylesheet execution accessible as the xsltproc --profile option
  • fixed element-available() and the implementation of the various chunking methods present, Norm Walsh provided a lot of feedback
  • exclude-result-prefixes and namespaces output should now work as expected
  • added support of embedded stylesheet as described in section 2.7 of the spec

0.14.0: July 5 2001

  • lot of bug fixes, and code cleanup
  • completion of the little XSLT-1.0 features left unimplemented
  • Added and implemented the extension API suggested by Thomas Broyer
  • the Windows MSC environment should be complete
  • tested and optimized with a really large document (DocBook Definitive Guide) libxml/libxslt should really be faster on serious workloads

0.13.0: June 26 2001

  • lots of cleanups
  • fixed a C++ compilation problem
  • couple of fixes to xsltSaveTo()
  • try to fix Docbook-xslt-1.4 and chunking, updated the regression test with them
  • fixed pattern compilation and priorities problems
  • Patches for Windows and MSC project mostly contributed by Yon Derek
  • update to the Tutorial by John Fleck
  • William fixed bugs in templates and for-each functions
  • added a new interface xsltRunStylesheet() for a more flexible output (incomplete), added -o option to xsltproc

0.12.0: June 18 2001

  • fixed a dozen of bugs reported
  • HTML generation should be quite better (requires libxml-2.3.11 upgrade too)
  • William fixed some problems with document()
  • Fix namespace nodes selection and copy (requires libxml-2.3.11 upgrade too)
  • John Fleck added a tutorial
  • Fixes for namespace handling when evaluating variables
  • XInclude global flag added to process XInclude on document() if requested
  • made xsltproc --version more detailed

0.11.0: June 1 2001

Mostly a bug fix release.

  • integration of catalogs from xsltproc
  • added --version to xsltproc for bug reporting
  • fixed errors when handling ID in external parsed entities
  • document() should hopefully work correctly but ...
  • fixed bug with PI and comments processing
  • William fixed the XPath string functions when using unicode

0.10.0: May 19 2001

  • cleanups to make stylesheet read-only (not 100% complete)
  • fixed URI resolution in document()
  • force all XPath expression to be compiled at stylesheet parsing time, even if unused ...
  • Fixed HTML default output detection
  • Fixed double attribute generation #54446
  • Fixed {{ handling in attributes #54451
  • More tests and speedups for DocBook document transformations
  • Fixed a really bad race like bug in xsltCopyTreeList()
  • added a documentation on the libxslt internals
  • William Brack and Bjorn Reese improved format-number()
  • Fixed multiple sort, it should really work now
  • added a --docbook option for SGML DocBook input (hackish)
  • a number of other bug fixes and regression test added as people were submitting them

0.9.0: May 3 2001

  • lot of various bugfixes, extended the regression suite
  • xsltproc should work with multiple params
  • added an option to use xsltproc with HTML input
  • improved the stylesheet compilation, processing of complex stylesheets should be faster
  • using the same stylesheet for concurrent processing on multithreaded programs should work now
  • fixed another batch of namespace handling problems
  • Implemented multiple level of sorting

0.8.0: Apr 22 2001

  • fixed ansidecl.h problem
  • fixed unparsed-entity-uri() and generate-id()
  • sort semantic fixes and priority prob from William M. Brack
  • fixed namespace handling problems in XPath expression computations (requires libxml-2.3.7)
  • fixes to current() and key()
  • other, smaller fixes, lots of testing with N Walsh DocBook HTML stylesheets

0.7.0: Apr 10 2001

  • cleanup using stricter compiler flags
  • command line parameter passing
  • fix to xsltApplyTemplates from William M. Brack
  • added the XSLTMark in the regression tests as well as document()

0.6.0: Mar 22 2001

  • another beta
  • requires 2.3.5, which provide XPath expression compilation support
  • document() extension should function properly
  • fixed a number or reported bugs

0.5.0: Mar 10 2001

  • fifth beta
  • some optimization work, for the moment 2 XSLT transform cannot use the same stylesheet at the same time (to be fixed)
  • fixed problems with handling of tree results
  • fixed a reported strip-spaces problem
  • added more reported/fixed bugs to the test suite
  • incorporated William M. Brack fix for imports and global variables as well as patch for with-param support in apply-templates
  • a bug fix on for-each

0.4.0: Mar 1 2001

  • fourth beta test, released at the same time of libxml2-2.3.3
  • bug fixes
  • some optimization
  • started implement extension support, not finished
  • implemented but not tested multiple file output

0.3.0: Feb 24 2001

  • third beta test, released at the same time of libxml2-2.3.2
  • lot of bug fixes
  • some optimization
  • added DocBook XSL based testsuite

0.2.0: Feb 15 2001

  • second beta version, released at the same time as libxml2-2.3.1
  • getting close to feature completion, lot of bug fixes, some in the HTML and XPath support of libxml
  • start becoming usable for real work. This version can now regenerate the XML 2e HTML from the original XML sources and the associated stylesheets (in section I of the XML REC)
  • Still misses extension element/function/prefixes support. Support of key() and document() is not complete

0.1.0: Feb 8 2001

  • first beta version, released at the same time as libxml2-2.3.0
  • lots of bug fixes, first "testing" version, but incomplete

0.0.1: Jan 25 2001

  • first alpha version released at the same time as libxml2-2.2.12
  • Framework in place, should work on simple examples, but far from being feature complete

The xsltproc tool

This program is the simplest way to use libxslt: from the command line. It is also used for doing the regression tests of the library.

It takes as first argument the path or URL to an XSLT stylesheet, the next arguments are filenames or URIs of the inputs to be processed. The output of the processing is redirected on the standard output. There is actually a few more options available:

orchis:~ -> xsltproc
Usage: xsltproc [options] stylesheet file [file ...]
   Options:
      --version or -V: show the version of libxml and libxslt used
      --verbose or -v: show logs of what's happening
      --output file or -o file: save to a given file
      --timing: display the time used
      --repeat: run the transformation 20 times
      --debug: dump the tree of the result instead
      --novalid: skip the DTD loading phase
      --noout: do not dump the result
      --maxdepth val : increase the maximum depth
      --html: the input document is(are) an HTML file(s)
      --docbook: the input document is SGML docbook
      --param name value : pass a (parameter,value) pair
      --nonet refuse to fetch DTDs or entities over network
      --warnnet warn against fetching over the network
      --catalogs : use the catalogs from $SGML_CATALOG_FILES
      --xinclude : do XInclude processing on document input
      --profile or --norman : dump profiling information 
orchis:~ ->

DocBook

The duck picture

DocBook is an XML/SGML vocabulary particularly well suited to books and papers about computer hardware and software.

xsltproc and libxslt are not specifically dependant on DocBook, but since a lot of people use xsltproc and libxml2 for DocBook formatting, here are a few pointers and information which may be helpful:

Do not use the --docbook option of xsltproc to process XML DocBook documents, this option is only intended to provide some (limited) support of the SGML version of DocBook.

Points which are not DocBook specific but still worth mentionning again:

  • if you think DocBook processing time is too slow, make sure you have XML Catalogs pointing to a local installation of the DTD of DocBook. Check the XML Catalog page to understand more on this subject.
  • before processing a new document, use the command

    xmllint --valid --noout path_to_document

    to make sure that your input is valid DocBook. And fixes the errors before processing further. Note that XSLT processing may work correctly with some forms of validity errors left, but in general it can give troubles on output.

The programming API

Okay this section is clearly incomplete. But integrating libxslt into your application should be relatively easy. First check the few steps described below, then for more detailed information, look at the generated pages for the API and the source of libxslt/xsltproc.c and the tutorial.

Basically doing an XSLT transformation can be done in a few steps:

  1. configure the parser for XSLT:

    xmlSubstituteEntitiesDefault(1);

    xmlLoadExtDtdDefaultValue = 1;

  2. parse the stylesheet with xsltParseStylesheetFile()
  3. parse the document with xmlParseFile()
  4. apply the stylesheet using xsltApplyStylesheet()
  5. save the result using xsltSaveResultToFile() if needed set xmlIndentTreeOutput to 1

Steps 2,3, and 5 will probably need to be changed depending on you processing needs and environment for example if reading/saving from/to memory, or if you want to apply XInclude processing to the stylesheet or input documents.

Python and bindings

There is a number of language bindings and wrappers available for libxml2, the list below is not exhaustive. Please contact the xml-bindings@gnome.org (archives) in order to get updates to this list or to discuss the specific topic of libxml2 or libxslt wrappers or bindings:

The libxslt Python module depends on the libxml2 Python module.

The distribution includes a set of Python bindings, which are guaranteed to be maintained as part of the library in the future, though the Python interface have not yet reached the completeness of the C API.

Stphane Bidoul maintains a Windows port of the Python bindings.

Note to people interested in building bindings, the API is formalized as an XML API description file which allows to automate a large part of the Python bindings, this includes function descriptions, enums, structures, typedefs, etc... The Python script used to build the bindings is python/generator.py in the source distribution.

To install the Python bindings there are 2 options:

  • If you use an RPM based distribution, simply install the libxml2-python RPM and the libxslt-python RPM.
  • Otherwise use the libxml2-python module distribution corresponding to your installed version of libxml2 and libxslt. Note that to install it you will need both libxml2 and libxslt installed and run "python setup.py build install" in the module tree.

The distribution includes a set of examples and regression tests for the python bindings in the python/tests directory. Here are some excepts from those tests:

basic.py:

This is a basic test of XSLT interfaces: loading a stylesheet and a document, transforming the document and saving the result.

import libxml2
import libxslt

styledoc = libxml2.parseFile("test.xsl")
style = libxslt.parseStylesheetDoc(styledoc)
doc = libxml2.parseFile("test.xml")
result = style.applyStylesheet(doc, None)
style.saveResultToFilename("foo", result, 0)
style.freeStylesheet()
doc.freeDoc()
result.freeDoc()

The Python module is called libxslt, you will also need the libxml2 module for the operations on XML trees. Let's have a look at the objects manipulated in that example and how is the processing done:

  • styledoc : is a libxml2 document tree. It is obtained by parsing the XML file "test.xsl" containing the stylesheet.
  • style : this is a precompiled stylesheet ready to be used by the following transformations (note the plural form, multiple transformations can resuse the same stylesheet).
  • doc : this is the document to apply the transformation to. In this case it is simply generated by parsing it from a file but any other processing is possible as long as one get a libxml2 Doc. Note that HTML tree are suitable for XSLT processing in libxslt. This is actually how this page is generated !
  • result : this is a document generated by applying the stylesheet to the document. Note that some of the stylesheet information may be related to the serialization of that document and as in this example a specific saveResultToFilename() method of the stylesheet should be used to save it to a file (in that case to "foo").

Also note the need to explicitely deallocate documents with freeDoc() except for the stylesheet document which is freed when its compiled form is garbage collected.

extfunc.py:

This one is a far more complex test. It shows how to modify the behaviour of an XSLT transformation by passing parameters and how to extend the XSLT engine with functions defined in python:

import libxml2
import libxslt
import string

nodeName = None
def f(ctx, str):
    global nodeName

    #
    # Small check to verify the context is correcly accessed
    #
    try:
        pctxt = libxslt.xpathParserContext(_obj=ctx)
        ctxt = pctxt.context()
        tctxt = ctxt.transformContext()
        nodeName = tctxt.insertNode().name
    except:
        pass

    return string.upper(str)

libxslt.registerExtModuleFunction("foo", "http://example.com/foo", f)

This code defines and register an extension function. Note that the function can be bound to any name (foo) and how the binding is also associated to a namespace name "http://example.com/foo". From an XSLT point of view the function just returns an upper case version of the string passed as a parameter. But the first part of the function also read some contextual information from the current XSLT processing environement, in that case it looks for the current insertion node in the resulting output (either the resulting document or the Result Value Tree being generated), and saves it to a global variable for checking that the access actually worked.

For more information on the xpathParserContext and transformContext objects check the libray internals description. The pctxt is actually an object from a class derived from the libxml2.xpathParserContext() with just a couple more properties including the possibility to look up the XSLT transformation context from the XPath context.

styledoc = libxml2.parseDoc("""
<xsl:stylesheet version='1.0'
  xmlns:xsl='http://www.w3.org/1999/XSL/Transform'
  xmlns:foo='http://example.com/foo'
  xsl:exclude-result-prefixes='foo'>

  <xsl:param name='bar'>failure</xsl:param>
  <xsl:template match='/'>
    <article><xsl:value-of select='foo:foo($bar)'/></article>
  </xsl:template>
</xsl:stylesheet>
""")

Here is a simple example of how to read an XML document from a python string with libxml2. Note how this stylesheet:

  • Uses a global parameter bar
  • Reference the extension function f
  • how the Namespace name "http://example.com/foo" has to be bound to a prefix
  • how that prefix is excluded from the output
  • how the function is called from the select
style = libxslt.parseStylesheetDoc(styledoc)
doc = libxml2.parseDoc("<doc/>")
result = style.applyStylesheet(doc, { "bar": "'success'" })
style.freeStylesheet()
doc.freeDoc()

that part is identical, to the basic example except that the transformation is passed a dictionary of parameters. Note that the string passed "success" had to be quoted, otherwise it is interpreted as an XPath query for the childs of root named "success".

root = result.children
if root.name != "article":
    print "Unexpected root node name"
    sys.exit(1)
if root.content != "SUCCESS":
    print "Unexpected root node content, extension function failed"
    sys.exit(1)
if nodeName != 'article':
    print "The function callback failed to access its context"
    sys.exit(1)

result.freeDoc()

That part just verifies that the transformation worked, that the parameter got properly passed to the engine, that the function f() got called and that it properly accessed the context to find the name of the insertion node.

pyxsltproc.py:

this module is a bit too long to be described there but it is basically a rewrite of the xsltproc command line interface of libxslt in Python. It provides nearly all the functionalities of xsltproc and can be used as a base module to write Python customized XSLT processors. One of the thing to notice are:

libxml2.lineNumbersDefault(1)
libxml2.substituteEntitiesDefault(1)

those two calls in the main() function are needed to force the libxml2 processor to generate DOM trees compliant with the XPath data model.

Library internals

Table of contents

Introduction

This document describes the processing of libxslt, the XSLT C library developed for the GNOME project.

Note: this documentation is by definition incomplete and I am not good at spelling, grammar, so patches and suggestions are really welcome.

Basics

XSLT is a transformation language. It takes an input document and a stylesheet document and generates an output document:

the XSLT processing model

Libxslt is written in C. It relies on libxml, the XML C library for GNOME, for the following operations:

  • parsing files
  • building the in-memory DOM structure associated with the documents handled
  • the XPath implementation
  • serializing back the result document to XML and HTML. (Text is handled directly.)

Keep it simple stupid

Libxslt is not very specialized. It is built under the assumption that all nodes from the source and output document can fit in the virtual memory of the system. There is a big trade-off there. It is fine for reasonably sized documents but may not be suitable for large sets of data. The gain is that it can be used in a relatively versatile way. The input or output may never be serialized, but the size of documents it can handle are limited by the size of the memory available.

More specialized memory handling approaches are possible, like building the input tree from a serialization progressively as it is consumed, factoring repetitive patterns, or even on-the-fly generation of the output as the input is parsed but it is possible only for a limited subset of the stylesheets. In general the implementation of libxslt follows the following pattern:

  • KISS (keep it simple stupid)
  • when there is a clear bottleneck optimize on top of this simple framework and refine only as much as is needed to reach the expected result

The result is not that bad, clearly one can do a better job but more specialized too. Most optimization like building the tree on-demand would need serious changes to the libxml XPath framework. An easy step would be to serialize the output directly (or call a set of SAX-like output handler to keep this a flexible interface) and hence avoid the memory consumption of the result.

The libxml nodes

DOM-like trees, as used and generated by libxml and libxslt, are relatively complex. Most node types follow the given structure except a few variations depending on the node type:

description of a libxml node

Nodes carry a name and the node type indicates the kind of node it represents, the most common ones are:

  • document nodes
  • element nodes
  • text nodes

For the XSLT processing, entity nodes should not be generated (i.e. they should be replaced by their content). Most nodes also contains the following "navigation" information:

  • the containing document
  • the parent node
  • the first children node
  • the last children node
  • the previous sibling
  • the following sibling (next)

Elements nodes carries the list of attributes in the properties, an attribute itself holds the navigation pointers and the children list (the attribute value is not represented as a simple string to allow usage of entities references).

The ns points to the namespace declaration for the namespace associated to the node, nsDef is the linked list of namespace declaration present on element nodes.

Most nodes also carry an _private pointer which can be used by the application to hold specific data on this node.

The XSLT processing steps

There are a few steps which are clearly decoupled at the interface level:

  1. parse the stylesheet and generate a DOM tree
  2. take the stylesheet tree and build a compiled version of it (the compilation phase)
  3. take the input and generate a DOM tree
  4. process the stylesheet against the input tree and generate an output tree
  5. serialize the output tree

A few things should be noted here:

  • the steps 1/ 3/ and 5/ are optional: the DOM representing the stylesheet and input can be created by other means, not just by parsing serialized XML documents, and similarly the result tree DOM can be made available to other processeswithout being serialized.
  • the stylesheet obtained at 2/ can be reused by multiple processing 4/ (and this should also work in threaded programs)
  • the tree provided in 2/ should never be freed using xmlFreeDoc, but by freeing the stylesheet.
  • the input tree created in step 3/ is not modified except the _private field which may be used for labelling keys if used by the stylesheet. It's not modified at all in step 4/ to allow parallel processing using a shared precompiled stylesheet.

The XSLT stylesheet compilation

This is the second step described. It takes a stylesheet tree, and "compiles" it. This associates to each node a structure stored in the _private field and containing information computed in the stylesheet:

a compiled XSLT stylesheet

One xsltStylesheet structure is generated per document parsed for the stylesheet. XSLT documents allow includes and imports of other documents, imports are stored in the imports list (hence keeping the tree hierarchy of includes which is very important for a proper XSLT processing model) and includes are stored in the doclist list. An imported stylesheet has a parent link to allow browsing of the tree.

The DOM tree associated to the document is stored in doc. It is preprocessed to remove ignorable empty nodes and all the nodes in the XSLT namespace are subject to precomputing. This usually consist of extracting all the context information from the context tree (attributes, namespaces, XPath expressions), and storing them in an xsltStylePreComp structure associated to the _private field of the node.

A couple of notable exceptions to this are XSLT template nodes (more on this later) and attribute value templates. If they are actually templates, the value cannot be computed at compilation time. (Some preprocessing could be done like isolation and preparsing of the XPath subexpressions but it's not done, yet.)

The xsltStylePreComp structure also allows storing of the precompiled form of an XPath expression that can be associated to an XSLT element (more on this later).

The XSLT template compilation

A proper handling of templates lookup is one of the keys of fast XSLT processing. (Given a node in the source document this is the process of finding which templates should be applied to this node.) Libxslt follows the hint suggested in the 5.2 Patterns section of the XSLT Recommendation, i.e. it doesn't evaluate it as an XPath expression but tokenizes it and compiles it as a set of rules to be evaluated on a candidate node. There usually is an indication of the node name in the last step of this evaluation and this is used as a key check for the match. As a result libxslt builds a relatively more complex set of structures for the templates:

The templates related structure

Let's describe a bit more closely what is built. First the xsltStylesheet structure holds a pointer to the template hash table. All the XSLT patterns compiled in this stylesheet are indexed by the value of the the target element (or attribute, pi ...) name, so when a element or an attribute "foo" needs to be processed the lookup is done using the name as a key.

Each of the patterns is compiled into an xsltCompMatch (i.e. an ''XSLT compiled match') structure. It holds the set of rules based on the tokenization of the pattern stored in reverse order (matching is easier this way).

The xsltCompMatch are then stored in the hash table, the clash list is itself sorted by priority of the template to implement "naturally" the XSLT priority rules.

Associated to the compiled pattern is the xsltTemplate itself containing the information required for the processing of the pattern including, of course, a pointer to the list of elements used for building the pattern result.

Last but not least a number of patterns do not fit in the hash table because they are not associated to a name, this is the case for patterns applying to the root, any element, any attributes, text nodes, pi nodes, keys etc. Those are stored independently in the stylesheet structure as separate linked lists of xsltCompMatch.

The processing itself

The processing is defined by the XSLT specification (the basis of the algorithm is explained in the Introduction section). Basically it works by taking the root of the input document as the cureent node and applying the following algorithm:

  1. Finding the template applying to current node. This is a lookup in the template hash table, walking the hash list until the node satisfies all the steps of the pattern, then checking the appropriate global template(s) (i.e. templates applying to a node type) to see if there isn't a higher priority rule to apply
  2. If there is no template, apply the default rule (recurse on the children as the current node)
  3. else walk the content list of the selected templates, for each of them:
    • if the node is in the XSLT namespace then the node has a _private field pointing to the preprocessed values, jump to the specific code
    • if the node is in an extension namespace, look up the associated behavior
    • otherwise copy the node.

    The closure is usually done through the XSLT apply-templatesconstruct, which invokes this process recursively starting at step 1, to find the appropriate template for the nodes selected by the 'select' attribute of the apply-templates instruction (default: the children of the node currently being processed)

Note that large parts of the input tree may not be processed by a given stylesheet and that conversely some may be processed multiple times. (This often is the case when a Table of Contents is built).

The module transform.c is the one implementing most of this logic. xsltApplyStylesheet() is the entry point, it allocates an xsltTransformContext containing the following:

  • a pointer to the stylesheet being processed
  • a stack of templates
  • a stack of variables and parameters
  • an XPath context
  • the template mode
  • current document
  • current input node
  • current selected node list
  • the current insertion points in the output document
  • a couple of hash tables for extension elements and functions

Then a new document gets allocated (HTML or XML depending on the type of output), the user parameters and global variables and parameters are evaluated. Then xsltProcessOneNode() which implements the 1-2-3 algorithm is called on the docuemnt node of the input. Step 1/ is implemented by calling xsltGetTemplate(), step 2/ is implemented by xsltDefaultProcessOneNode() and step 3/ is implemented by xsltApplyOneTemplate().

XPath expression compilation

The XPath support is actually implemented in the libxml module (where it is reused by the XPointer implementation). XPath is a relatively classic expression language. The only uncommon feature is that it is working on XML trees and hence has specific syntax and types to handle them.

XPath expressions are compiled using xmlXPathCompile(). It will take an expression string in input and generate a structure containing the parsed expression tree, for example the expression:

/doc/chapter[title='Introduction']

will be compiled as

Compiled Expression : 10 elements
  SORT
    COLLECT  'child' 'name' 'node' chapter
      COLLECT  'child' 'name' 'node' doc
        ROOT
      PREDICATE
        SORT
          EQUAL =
            COLLECT  'child' 'name' 'node' title
              NODE
            ELEM Object is a string : Introduction
              COLLECT  'child' 'name' 'node' title
                NODE

This can be tested using the testXPath command (in the libxml codebase) using the --tree option.

Again, the KISS approach is used. No optimization is done. This could be an interesting thing to add. Michael Kay describes a lot of possible and interesting optimizations done in Saxon which would be possible at this level. I'm unsure they would provide much gain since the expressions tends to be relatively simple in general and stylesheets are still hand generated. Optimizations at the interpretation sounds likely to be more efficient.

XPath interpretation

The interpreter is implemented by xmlXPathCompiledEval() which is the front-end to xmlXPathCompOpEval() the function implementing the evaluation of the expression tree. This evaluation follows the KISS approach again. It's recursive and calls xmlXPathNodeCollectAndTest() to collect a set of nodes when evaluating a COLLECT node.

An evaluation is done within the framework of an XPath context stored in an xmlXPathContext structure, in the framework of a transformation the context is maintained within the XSLT context. Its content follows the requirements from the XPath specification:

  • the current document
  • the current node
  • a hash table of defined variables (but not used by XSLT, which uses its own stack frame for variables, described below)
  • a hash table of defined functions
  • the proximity position (the place of the node in the current node list)
  • the context size (the size of the current node list)
  • the array of namespace declarations in scope (there also is a namespace hash table but it is not used in the XSLT transformation).

For the purpose of XSLT an extra pointer has been added allowing to retrieve the XSLT transformation context. When an XPath evaluation is about to be performed, an XPath parser context is allocated containing an XPath object stack (this is actually an XPath evaluation context, this is a relic of the time where there was no separate parsing and evaluation phase in the XPath implementation). Here is an overview of the set of contexts associated to an XPath evaluation within an XSLT transformation:

The set of contexts associated

Clearly this is a bit too complex and confusing and should be refactored at the next set of binary incompatible releases of libxml. For example the xmlXPathCtxt has a lot of unused parts and should probably be merged with xmlXPathParserCtxt.

Description of XPath Objects

An XPath expression manipulates XPath objects. XPath defines the default types boolean, numbers, strings and node sets. XSLT adds the result tree fragment type which is basically an unmodifiable node set.

Implementation-wise, libxml follows again a KISS approach, the xmlXPathObject is a structure containing a type description and the various possibilities. (Using an enum could have gained some bytes.) In the case of node sets (or result tree fragments), it points to a separate xmlNodeSet object which contains the list of pointers to the document nodes:

An Node set object pointing to

The XPath API (and its 'internal' part) includes a number of functions to create, copy, compare, convert or free XPath objects.

XPath functions

All the XPath functions available to the interpreter are registered in the function hash table linked from the XPath context. They all share the same signature:

void xmlXPathFunc (xmlXPathParserContextPtr ctxt, int nargs);

The first argument is the XPath interpretation context, holding the interpretation stack. The second argument defines the number of objects passed on the stack for the function to consume (last argument is on top of the stack).

Basically an XPath function does the following:

  • check nargs for proper handling of errors or functions with variable numbers of parameters
  • pop the parameters from the stack using obj = valuePop(ctxt);
  • do the function specific computation
  • push the result parameter on the stack using valuePush(ctxt, res);
  • free up the input parameters with xmlXPathFreeObject(obj);
  • return

Sometime the work can be done directly by modifying in-situ the top object on the stack ctxt->value.

The XSLT variables stack frame

Not to be confused with XPath object stack, this stack holds the XSLT variables and parameters as they are defined through the recursive calls of call-template, apply-templates and default templates. This is used to define the scope of variables being called.

This part seems to be one needing most work , first it is done in a very inefficient way since the location of the variables and parameters within the stylesheet tree is still done at run time (it really should be done statically at compile time), and I am still unsure that my understanding of the template variables and parameter scope is actually right.

This part of the documentation is still to be written once this part of the code will be stable. TODO

Extension support

There is a separate document explaining how the extension support works.

Further reading

Michael Kay wrote a really interesting article on Saxon internals and the work he did on performance issues. I wish I had read it before starting libxslt design (I would probably have avoided a few mistakes and progressed faster). A lot of the ideas in his papers should be implemented or at least tried in libxslt.

The libxml documentation, especially the I/O interfaces and the memory management.

TODOs

redesign the XSLT stack frame handling. Far too much work is done at execution time. Similarly for the attribute value templates handling, at least the embedded subexpressions ought to be precompiled.

Allow output to be saved to a SAX like output (this notion of SAX like API for output should be added directly to libxml).

Implement and test some of the optimization explained by Michael Kay especially:

  • static slot allocation on the stack frame
  • specific boolean interpretation of an XPath expression
  • some of the sorting optimization
  • Lazy evaluation of location path. (this may require more changes but sounds really interesting. XT does this too.)
  • Optimization of an expression tree (This could be done as a completely independent module.)

Error reporting, there is a lot of case where the XSLT specification specify that a given construct is an error are not checked adequately by libxslt. Basically one should do a complete pass on the XSLT spec again and add all tests to the stylesheet compilation. Using the DTD provided in the appendix and making direct checks using the libxml validation API sounds a good idea too (though one should take care of not raising errors for elements/attributes in different namespaces).

Double check all the places where the stylesheet compiled form might be modified at run time (extra removal of blanks nodes, hint on the xsltCompMatch).

Thanks:

Thanks to Michael Sperberg-McQueen for various fixes and clarifications on this document!

Writing extensions

Table of content

Introduction

This document describes the work needed to write extensions to the standard XSLT library for use with libxslt, the XSLT C library developed for the GNOME project.

Before starting reading this document it is highly recommended to get familiar with the libxslt internals.

Note: this documentation is by definition incomplete and I am not good at spelling, grammar, so patches and suggestions are really welcome.

Basics

The XSLT specification provides two ways to extend an XSLT engine:

In both cases the extensions need to be associated to a new namespace, i.e. an URI used as the name for the extension's namespace (there is no need to have a resource there for this to work).

libxslt provides a few extensions itself, either in the libxslt namespace "http://xmlsoft.org/XSLT/namespace" or in namespaces for other well known extensions provided by other XSLT processors like Saxon, Xalan or XT.

Extension modules

Since extensions are bound to a namespace name, usually sets of extensions coming from a given source are using the same namespace name defining in practice a group of extensions providing elements, functions or both. From the libxslt point of view those are considered as an "extension module", and most of the APIs work at a module point of view.

Registration of new functions or elements are bound to the activation of the module. This is currently done by declaring the namespace as an extension by using the attribute extension-element-prefixes on the xsl:stylesheet element.

An extension module is defined by 3 objects:

  • the namespace name associated
  • an initialization function
  • a shutdown function

Registering a module

Currently a libxslt module has to be compiled within the application using libxslt. There is no code to load dynamically shared libraries associated to a namespace (this may be added but is likely to become a portability nightmare).

The current way to register a module is to link the code implementing it with the application and to call a registration function:

int xsltRegisterExtModule(const xmlChar *URI,
                          xsltExtInitFunction initFunc,
                          xsltExtShutdownFunction shutdownFunc);

The associated header is read by:

#include<libxslt/extensions.h>

which also defines the type for the initialization and shutdown functions

Loading a module

Once the module URI has been registered and if the XSLT processor detects that a given stylesheet needs the functionalities of an extended module, this one is initialized.

The xsltExtInitFunction type defines the interface for an initialization function:

/**
 * xsltExtInitFunction:
 * @ctxt:  an XSLT transformation context
 * @URI:  the namespace URI for the extension
 *
 * A function called at initialization time of an XSLT
 * extension module
 *
 * Returns a pointer to the module specific data for this
 * transformation
 */
typedef void *(*xsltExtInitFunction)(xsltTransformContextPtr ctxt,
                                     const xmlChar *URI);

There are 3 things to notice:

  • The function gets passed the namespace name URI as an argument. This allows a single function to provide the initialization for multiple logical modules.
  • It also gets passed a transformation context. The initialization is done at run time before any processing occurs on the stylesheet but it will be invoked separately each time for each transformation.
  • It returns a pointer. This can be used to store module specific information which can be retrieved later when a function or an element from the extension is used. An obvious example is a connection to a database which should be kept and reused along with the transformation. NULL is a perfectly valid return; there is no way to indicate a failure at this level

What this function is expected to do is:

  • prepare the context for this module (like opening the database connection)
  • register the extensions specific to this module

Registering an extension function

There is a single call to do this registration:

int xsltRegisterExtFunction(xsltTransformContextPtr ctxt,
                            const xmlChar *name,
                            const xmlChar *URI,
                            xmlXPathEvalFunc function);

The registration is bound to a single transformation instance referred by ctxt, name is the UTF8 encoded name for the NCName of the function, and URI is the namespace name for the extension (no checking is done, a module could register functions or elements from a different namespace, but it is not recommended).

Implementing an extension function

The implementation of the function must have the signature of a libxml XPath function:

/**
 * xmlXPathEvalFunc:
 * @ctxt: an XPath parser context
 * @nargs: the number of arguments passed to the function
 *
 * an XPath evaluation function, the parameters are on the
 * XPath context stack
 */

typedef void (*xmlXPathEvalFunc)(xmlXPathParserContextPtr ctxt,
                                 int nargs);

The context passed to an XPath function is not an XSLT context but an XPath context. However it is possible to find one from the other:

  • The function xsltXPathGetTransformContext provides this lookup facility:
    xsltTransformContextPtr
             xsltXPathGetTransformContext
                              (xmlXPathParserContextPtr ctxt);
  • The xmlXPathContextPtr associated to an xsltTransformContext is stored in the xpathCtxt field.

The first thing an extension function may want to do is to check the arguments passed on the stack, the nargs parameter will tell how many of them were provided on the XPath expression. The macro valuePop will extract them from the XPath stack:

#include <libxml/xpath.h>
#include <libxml/xpathInternals.h>

xmlXPathObjectPtr obj = valuePop(ctxt); 

Note that ctxt is the XPath context not the XSLT one. It is then possible to examine the content of the value. Check the description of XPath objects if necessary. The following is a common sequence checking whether the argument passed is a string and converting it using the built-in XPath string() function if this is not the case:

if (obj->type != XPATH_STRING) {
    valuePush(ctxt, obj);
    xmlXPathStringFunction(ctxt, 1);
    obj = valuePop(ctxt);
}

Most common XPath functions are available directly at the C level and are exported either in <libxml/xpath.h> or in <libxml/xpathInternals.h>.

The extension function may also need to retrieve the data associated to this module instance (the database connection in the previous example) this can be done using the xsltGetExtData:

void * xsltGetExtData(xsltTransformContextPtr ctxt,
                      const xmlChar *URI);

Again the URI to be provided is the one which was used when registering the module.

Once the function finishes, don't forget to:

  • push the return value on the stack using valuePush(ctxt, obj)
  • deallocate the parameters passed to the function using xmlXPathFreeObject(obj)

Examples for extension functions

The module libxslt/functions.c contains the sources of the XSLT built-in functions, including document(), key(), generate-id(), etc. as well as a full example module at the end. Here is the test function implementation for the libxslt:test function:

/**
 * xsltExtFunctionTest:
 * @ctxt:  the XPath Parser context
 * @nargs:  the number of arguments
 *
 * function libxslt:test() for testing the extensions support.
 */
static void
xsltExtFunctionTest(xmlXPathParserContextPtr ctxt, int nargs)
{
    xsltTransformContextPtr tctxt;
    void *data;

    tctxt = xsltXPathGetTransformContext(ctxt);
    if (tctxt == NULL) {
        xsltGenericError(xsltGenericErrorContext,
            "xsltExtFunctionTest: failed to get the transformation context\n");
        return;
    }
    data = xsltGetExtData(tctxt, (const xmlChar *) XSLT_DEFAULT_URL);
    if (data == NULL) {
        xsltGenericError(xsltGenericErrorContext,
            "xsltExtFunctionTest: failed to get module data\n");
        return;
    }
#ifdef WITH_XSLT_DEBUG_FUNCTION
    xsltGenericDebug(xsltGenericDebugContext,
                     "libxslt:test() called with %d args\n", nargs);
#endif
}

Registering an extension element

There is a single call to do this registration:

int xsltRegisterExtElement(xsltTransformContextPtr ctxt,
                           const xmlChar *name,
                           const xmlChar *URI,
                           xsltTransformFunction function);

It is similar to the mechanism used to register an extension function, except that the signature of an extension element implementation is different.

The registration is bound to a single transformation instance referred to by ctxt, name is the UTF8 encoded name for the NCName of the element, and URI is the namespace name for the extension (no checking is done, a module could register elements for a different namespace, but it is not recommended).

Implementing an extension element

The implementation of the element must have the signature of an XSLT transformation function:

/** 
 * xsltTransformFunction: 
 * @ctxt: the XSLT transformation context
 * @node: the input node
 * @inst: the stylesheet node 
 * @comp: the compiled information from the stylesheet 
 * 
 * signature of the function associated to elements part of the
 * stylesheet language like xsl:if or xsl:apply-templates.
 */ 
typedef void (*xsltTransformFunction)
                          (xsltTransformContextPtr ctxt,
                           xmlNodePtr node,
                           xmlNodePtr inst,
                           xsltStylePreCompPtr comp);

The first argument is the XSLT transformation context. The second and third arguments are xmlNodePtr i.e. internal memory representation of XML nodes. They are respectively node from the the input document being transformed by the stylesheet and inst the extension element in the stylesheet. The last argument is comp a pointer to a precompiled representation of inst but usually for an extension function this value is NULL by default (it could be added and associated to the instruction in inst->_private).

The same functions are available from a function implementing an extension element as in an extension function, including xsltGetExtData().

The goal of an extension element being usually to enrich the generated output, it is expected that they will grow the currently generated output tree. This can be done by grabbing ctxt->insert which is the current libxml node being generated (Note this can also be the intermediate value tree being built for example to initialize a variable, the processing should be similar). The functions for libxml tree manipulation from <libxml/tree.h> can be employed to extend or modify the tree, but it is required to preserve the insertion node and its ancestors since there are existing pointers to those elements still in use in the XSLT template execution stack.

Example for extension elements

The module libxslt/transform.c contains the sources of the XSLT built-in elements, including xsl:element, xsl:attribute, xsl:if, etc. There is a small but full example in functions.c providing the implementation for the libxslt:test element, it will output a comment in the result tree:

/**
 * xsltExtElementTest:
 * @ctxt:  an XSLT processing context
 * @node:  The current node
 * @inst:  the instruction in the stylesheet
 * @comp:  precomputed information
 *
 * Process a libxslt:test node
 */
static void
xsltExtElementTest(xsltTransformContextPtr ctxt, xmlNodePtr node,
                   xmlNodePtr inst,
                   xsltStylePreCompPtr comp)
{
    xmlNodePtr comment;

    if (ctxt == NULL) {
        xsltGenericError(xsltGenericErrorContext,
                         "xsltExtElementTest: no transformation context\n");
        return;
    }
    if (node == NULL) {
        xsltGenericError(xsltGenericErrorContext,
                         "xsltExtElementTest: no current node\n");
        return;
    }
    if (inst == NULL) {
        xsltGenericError(xsltGenericErrorContext,
                         "xsltExtElementTest: no instruction\n");
        return;
    }
    if (ctxt->insert == NULL) {
        xsltGenericError(xsltGenericErrorContext,
                         "xsltExtElementTest: no insertion point\n");
        return;
    }
    comment =
        xmlNewComment((const xmlChar *)
                      "libxslt:test element test worked");
    xmlAddChild(ctxt->insert, comment);
}

The shutdown of a module

When the XSLT processor ends a transformation, the shutdown function (if it exists) for each of the modules initialized is called. The xsltExtShutdownFunction type defines the interface for a shutdown function:

/**
 * xsltExtShutdownFunction:
 * @ctxt:  an XSLT transformation context
 * @URI:  the namespace URI for the extension
 * @data:  the data associated to this module
 *
 * A function called at shutdown time of an XSLT extension module
 */
typedef void (*xsltExtShutdownFunction) (xsltTransformContextPtr ctxt,
                                         const xmlChar *URI,
                                         void *data);

This is really similar to a module initialization function except a third argument is passed, it's the value that was returned by the initialization function. This allows the routine to deallocate resources from the module for example close the connection to the database to keep the same example.

Future work

Well, some of the pieces missing:

  • a way to load shared libraries to instantiate new modules
  • a better detection of extension functions usage and their registration without having to use the extension prefix which ought to be reserved to element extensions.
  • more examples
  • implementations of the EXSLT common extension libraries, Thomas Broyer nearly finished implementing them.

Contributions

Daniel Veillard

PK|0]APIfunctions.htmlnu[ List of function manipulating types in libxslt
Action against software patentsGNOME2 LogoW3C logoRed Hat Logo
Made with Libxslt Logo

The XSLT C library for GNOME

List of function manipulating types in libxslt

Main Menu
Related links
API Indexes

Type ...:

xsltTransformError

Type FILE *:

xsltApplyStylesheetUser
xsltDebugDumpExtensions
xsltProfileStylesheet
xsltRunStylesheetUser
xsltSaveProfiling
xsltSaveResultToFile

Type const char **:

xsltApplyStylesheet
xsltApplyStylesheetUser
xsltEvalUserParams
xsltProfileStylesheet
xsltQuoteUserParams
xsltRunStylesheet
xsltRunStylesheetUser

Type const unsigned char *:

xsltGetUTF8Char

Type const xmlChar *:

xsltAddKey
xsltAddTemplate
xsltApplyAttributeSet
xsltAttrTemplateValueProcess
xsltAttrTemplateValueProcessNode
xsltCheckExtPrefix
xsltCheckExtURI
xsltCheckRead
xsltCheckWrite
xsltCompilePattern
xsltCopyTextString
xsltDecimalFormatGetByQName
xsltDocLoaderFunc
xsltEvalAttrValueTemplate
xsltEvalOneUserParam
xsltEvalStaticAttrValueTemplate
xsltExtElementLookup
xsltExtInitFunction
xsltExtModuleElementLookup
xsltExtModuleElementPreComputeLookup
xsltExtModuleFunctionLookup
xsltExtModuleTopLevelLookup
xsltExtShutdownFunction
xsltFindTemplate
xsltGetCNsProp
xsltGetExtData
xsltGetExtInfo
xsltGetKey
xsltGetNsProp
xsltGetSpecialNamespace
xsltLoadDocument
xsltLoadStyleDocument
xsltMatchPattern
xsltNewLocale
xsltNormalizeCompSteps
xsltParseStylesheetFile
xsltQuoteOneUserParam
xsltRegisterExtElement
xsltRegisterExtFunction
xsltRegisterExtModule
xsltRegisterExtModuleElement
xsltRegisterExtModuleFull
xsltRegisterExtModuleFunction
xsltRegisterExtModuleTopLevel
xsltRegisterExtPrefix
xsltSplitQName
xsltStrxfrm
xsltStyleExtInitFunction
xsltStyleExtShutdownFunction
xsltStyleGetExtData
xsltStyleStylesheetLevelGetExtData
xsltUnregisterExtModule
xsltUnregisterExtModuleElement
xsltUnregisterExtModuleFunction
xsltUnregisterExtModuleTopLevel
xsltVariableLookup
xsltXPathCompile
xsltXPathCompileFlags
xsltXPathFunctionLookup
xsltXPathVariableLookup

Type const xmlChar **:

xsltGetQNameURI2
xsltSplitQName

Type const xsltLocaleChar *:

xsltLocaleStrcmp

Type double:

xsltFormatNumberConversion

Type int *:

xsltEvalStaticAttrValueTemplate
xsltGetUTF8Char
xsltSaveResultToString

Type long:

xsltCalibrateAdjust

Type void *:

xsltDocLoaderFunc
xsltEvalAVT
xsltExtShutdownFunction
xsltFlagRVTs
xsltFreeAVTList
xsltNormalizeCompSteps
xsltPointerListAddSize
xsltSetDebuggerCallbacks
xsltSetGenericDebugFunc
xsltSetGenericErrorFunc
xsltSetTransformErrorFunc
xsltStyleExtShutdownFunction
xsltXPathVariableLookup

Type xmlAttrPtr:

xsltAttrListTemplateProcess
xsltAttrTemplateProcess
xsltCompileAttr

Type xmlChar *:

xsltDecimalFormatGetByName
xsltFormatNumberConversion
xsltIsBlank

Type xmlChar **:

xsltFormatNumberConversion
xsltGetQNameURI
xsltSaveResultToString

Type xmlDictPtr:

xsltDocLoaderFunc
xsltSplitQName

Type xmlDocPtr:

xsltApplyStylesheet
xsltApplyStylesheetUser
xsltCompilePattern
xsltFindDocument
xsltLoadStylesheetPI
xsltMatchPattern
xsltNewDocument
xsltNewStyleDocument
xsltNewTransformContext
xsltParseStylesheetDoc
xsltParseStylesheetImportedDoc
xsltParseStylesheetProcess
xsltProfileStylesheet
xsltRegisterLocalRVT
xsltRegisterPersistRVT
xsltRegisterTmpRVT
xsltReleaseRVT
xsltRestoreDocumentNamespaces
xsltRunStylesheet
xsltRunStylesheetUser
xsltSaveResultTo
xsltSaveResultToFd
xsltSaveResultToFile
xsltSaveResultToFilename
xsltSaveResultToString

Type xmlGenericErrorFunc:

xsltSetGenericDebugFunc
xsltSetGenericErrorFunc
xsltSetTransformErrorFunc

Type xmlNodePtr:

xslAddCall
xslHandleDebugger
xsltAddCallCallback
xsltAddKey
xsltApplyAttributeSet
xsltApplyImports
xsltApplyOneTemplate
xsltApplyStripSpaces
xsltApplyTemplates
xsltAttrListTemplateProcess
xsltAttrTemplateProcess
xsltAttrTemplateValueProcessNode
xsltAttribute
xsltCallTemplate
xsltChoose
xsltComment
xsltCompilePattern
xsltComputeSortResult
xsltCopy
xsltCopyNamespace
xsltCopyNamespaceList
xsltCopyOf
xsltCopyTextString
xsltDebug
xsltDocumentComp
xsltDocumentElem
xsltElement
xsltEvalAVT
xsltEvalAttrValueTemplate
xsltEvalStaticAttrValueTemplate
xsltEvalTemplateString
xsltFindElemSpaceHandling
xsltForEach
xsltGetCNsProp
xsltGetNamespace
xsltGetNsProp
xsltGetPlainNamespace
xsltGetQNameURI
xsltGetQNameURI2
xsltGetSpecialNamespace
xsltGetTemplate
xsltHandleDebuggerCallback
xsltIf
xsltInitElemPreComp
xsltMatchPattern
xsltMessage
xsltNamespaceAlias
xsltNewElemPreComp
xsltNumber
xsltNumberFormat
xsltParseAnyXSLTElem
xsltParseGlobalParam
xsltParseGlobalVariable
xsltParseSequenceConstructor
xsltParseStylesheetAttributeSet
xsltParseStylesheetCallerParam
xsltParseStylesheetImport
xsltParseStylesheetInclude
xsltParseStylesheetOutput
xsltParseStylesheetParam
xsltParseStylesheetVariable
xsltParseTemplateContent
xsltPreComputeExtModuleElement
xsltPreComputeFunction
xsltPrintErrorContext
xsltProcessOneNode
xsltProcessingInstruction
xsltSort
xsltStylePreCompute
xsltTemplateProcess
xsltTestCompMatchList
xsltText
xsltTopLevelFunction
xsltTransformError
xsltTransformFunction
xsltValueOf

Type xmlNodePtr *:

xsltDefaultSortFunction
xsltDoSortFunction
xsltSortFunc

Type xmlNodeSetPtr:

xsltDocumentSortFunction

Type xmlNsPtr:

xsltCopyNamespace
xsltCopyNamespaceList
xsltGetNamespace
xsltGetPlainNamespace

Type xmlNsPtr *:

xsltEvalXPathPredicate
xsltEvalXPathStringNs

Type xmlOutputBufferPtr:

xsltRunStylesheet
xsltRunStylesheetUser
xsltSaveResultTo

Type xmlSAXHandlerPtr:

xsltRunStylesheet
xsltRunStylesheetUser

Type xmlXPathCompExprPtr:

xsltEvalXPathPredicate
xsltEvalXPathString
xsltEvalXPathStringNs

Type xmlXPathContextPtr:

xsltRegisterAllFunctions
xsltXPathFunctionLookup

Type xmlXPathFunction:

xsltRegisterExtFunction
xsltRegisterExtModuleFunction

Type xmlXPathObjectPtr:

xsltExtensionInstructionResultRegister
xsltFlagRVTs

Type xmlXPathParserContextPtr:

xsltDocumentFunction
xsltElementAvailableFunction
xsltFormatNumberFunction
xsltFunctionAvailableFunction
xsltFunctionNodeSet
xsltGenerateIdFunction
xsltKeyFunction
xsltSystemPropertyFunction
xsltUnparsedEntityURIFunction
xsltXPathGetTransformContext

Type xsltCompMatchPtr:

xsltFreeCompMatchList
xsltTestCompMatchList

Type xsltCompilerCtxtPtr:

xsltParseAnyXSLTElem
xsltParseSequenceConstructor

Type xsltDebugTraceCodes:

xsltDebugSetDefaultTrace

Type xsltDecimalFormatPtr:

xsltFormatNumberConversion

Type xsltDocLoaderFunc:

xsltSetLoaderFunc

Type xsltDocumentPtr:

xsltFreeDocumentKeys
xsltInitCtxtKey
xsltInitCtxtKeys

Type xsltElemPreCompDeallocator:

xsltInitElemPreComp

Type xsltElemPreCompPtr:

xsltElemPreCompDeallocator
xsltInitElemPreComp
xsltTransformFunction

Type xsltExtInitFunction:

xsltRegisterExtModule
xsltRegisterExtModuleFull

Type xsltExtShutdownFunction:

xsltRegisterExtModule
xsltRegisterExtModuleFull

Type xsltKeyDefPtr:

xsltInitCtxtKey

Type xsltLoadType:

xsltDocLoaderFunc

Type xsltLocale:

xsltFreeLocale
xsltLocaleStrcmp
xsltStrxfrm

Type xsltNsMapPtr:

xsltRestoreDocumentNamespaces

Type xsltNumberDataPtr:

xsltNumberFormat

Type xsltPointerListPtr:

xsltPointerListAddSize
xsltPointerListClear
xsltPointerListFree

Type xsltPreComputeFunction:

xsltRegisterExtModuleElement

Type xsltSecurityCheck:

xsltSetSecurityPrefs

Type xsltSecurityOption:

xsltGetSecurityPrefs
xsltSetSecurityPrefs

Type xsltSecurityPrefsPtr:

xsltCheckRead
xsltCheckWrite
xsltFreeSecurityPrefs
xsltGetSecurityPrefs
xsltSecurityAllow
xsltSecurityCheck
xsltSecurityForbid
xsltSetCtxtSecurityPrefs
xsltSetDefaultSecurityPrefs
xsltSetSecurityPrefs

Type xsltSortFunc:

xsltSetCtxtSortFunc
xsltSetSortFunc

Type xsltStackElemPtr:

xsltAddStackElemList
xsltApplyOneTemplate
xsltFreeStackElemList
xsltLocalVariablePush
xsltProcessOneNode

Type xsltStyleExtInitFunction:

xsltRegisterExtModuleFull

Type xsltStyleExtShutdownFunction:

xsltRegisterExtModuleFull

Type xsltStylePreCompPtr:

xsltApplyImports
xsltApplyTemplates
xsltAttribute
xsltCallTemplate
xsltChoose
xsltComment
xsltCopy
xsltCopyOf
xsltDebug
xsltDocumentElem
xsltElement
xsltForEach
xsltIf
xsltNumber
xsltProcessingInstruction
xsltSort
xsltText
xsltValueOf

Type xsltStylesheetPtr:

xsltAddKey
xsltAddTemplate
xsltAllocateExtra
xsltApplyStylesheet
xsltApplyStylesheetUser
xsltCheckExtPrefix
xsltCheckExtURI
xsltCleanupTemplates
xsltCompileAttr
xsltCompilePattern
xsltDecimalFormatGetByName
xsltDecimalFormatGetByQName
xsltDocumentComp
xsltEvalStaticAttrValueTemplate
xsltFreeAttributeSetsHashes
xsltFreeExts
xsltFreeKeys
xsltFreeNamespaceAliasHashes
xsltFreeStyleDocuments
xsltFreeStylePreComps
xsltFreeStylesheet
xsltFreeTemplateHashes
xsltGetCNsProp
xsltGetExtInfo
xsltGetQNameURI2
xsltGetTemplate
xsltInitElemPreComp
xsltLoadStyleDocument
xsltNamespaceAlias
xsltNewElemPreComp
xsltNewStyleDocument
xsltNewTransformContext
xsltNextImport
xsltParseGlobalParam
xsltParseGlobalVariable
xsltParseStylesheetAttributeSet
xsltParseStylesheetImport
xsltParseStylesheetImportedDoc
xsltParseStylesheetInclude
xsltParseStylesheetOutput
xsltParseStylesheetProcess
xsltParseTemplateContent
xsltPreComputeExtModuleElement
xsltPreComputeFunction
xsltPrintErrorContext
xsltProfileStylesheet
xsltRegisterExtPrefix
xsltResolveStylesheetAttributeSet
xsltRunStylesheet
xsltRunStylesheetUser
xsltSaveResultTo
xsltSaveResultToFd
xsltSaveResultToFile
xsltSaveResultToFilename
xsltSaveResultToString
xsltShutdownExts
xsltStyleExtInitFunction
xsltStyleExtShutdownFunction
xsltStyleGetExtData
xsltStylePreCompute
xsltStyleStylesheetLevelGetExtData
xsltTopLevelFunction
xsltTransformError
xsltXPathCompile
xsltXPathCompileFlags

Type xsltTemplatePtr:

xslAddCall
xslHandleDebugger
xsltAddCallCallback
xsltAddTemplate
xsltApplyOneTemplate
xsltHandleDebuggerCallback

Type xsltTopLevelFunction:

xsltRegisterExtModuleTopLevel

Type xsltTransformContextPtr:

xslHandleDebugger
xsltAddStackElemList
xsltAllocateExtraCtxt
xsltApplyAttributeSet
xsltApplyImports
xsltApplyOneTemplate
xsltApplyStripSpaces
xsltApplyStylesheetUser
xsltApplyTemplates
xsltAttrListTemplateProcess
xsltAttrTemplateProcess
xsltAttrTemplateValueProcess
xsltAttrTemplateValueProcessNode
xsltAttribute
xsltCallTemplate
xsltCheckRead
xsltCheckWrite
xsltChoose
xsltComment
xsltCompilePattern
xsltComputeSortResult
xsltCopy
xsltCopyNamespace
xsltCopyNamespaceList
xsltCopyOf
xsltCopyTextString
xsltCreateRVT
xsltDebug
xsltDefaultSortFunction
xsltDoSortFunction
xsltDocumentElem
xsltElement
xsltEvalAVT
xsltEvalAttrValueTemplate
xsltEvalGlobalVariables
xsltEvalOneUserParam
xsltEvalTemplateString
xsltEvalUserParams
xsltEvalXPathPredicate
xsltEvalXPathString
xsltEvalXPathStringNs
xsltExtElementLookup
xsltExtInitFunction
xsltExtShutdownFunction
xsltExtensionInstructionResultFinalize
xsltExtensionInstructionResultRegister
xsltFindDocument
xsltFindElemSpaceHandling
xsltFindTemplate
xsltFlagRVTs
xsltForEach
xsltFreeCtxtExts
xsltFreeDocuments
xsltFreeGlobalVariables
xsltFreeRVTs
xsltFreeTransformContext
xsltGetExtData
xsltGetKey
xsltGetNamespace
xsltGetPlainNamespace
xsltGetProfileInformation
xsltGetSpecialNamespace
xsltGetTemplate
xsltHandleDebuggerCallback
xsltIf
xsltInitAllDocKeys
xsltInitCtxtExts
xsltInitCtxtKey
xsltInitCtxtKeys
xsltLoadDocument
xsltLocalVariablePop
xsltLocalVariablePush
xsltMatchPattern
xsltMessage
xsltNeedElemSpaceHandling
xsltNewDocument
xsltNumber
xsltNumberFormat
xsltParseStylesheetCallerParam
xsltParseStylesheetParam
xsltParseStylesheetVariable
xsltPrintErrorContext
xsltProcessOneNode
xsltProcessingInstruction
xsltQuoteOneUserParam
xsltQuoteUserParams
xsltRegisterAllElement
xsltRegisterExtElement
xsltRegisterExtFunction
xsltRegisterExtras
xsltRegisterLocalRVT
xsltRegisterPersistRVT
xsltRegisterTmpRVT
xsltReleaseRVT
xsltRunStylesheetUser
xsltSaveProfiling
xsltSecurityAllow
xsltSecurityCheck
xsltSecurityForbid
xsltSetCtxtParseOptions
xsltSetCtxtSecurityPrefs
xsltSetCtxtSortFunc
xsltSetTransformErrorFunc
xsltShutdownCtxtExts
xsltSort
xsltSortFunc
xsltTemplateProcess
xsltTestCompMatchList
xsltText
xsltTransformError
xsltTransformFunction
xsltValueOf
xsltVariableLookup

Type xsltTransformFunction:

xsltDocumentComp
xsltInitElemPreComp
xsltNewElemPreComp
xsltPreComputeFunction
xsltRegisterExtElement
xsltRegisterExtModuleElement

Daniel Veillard

PK|0]e help.htmlnu[ How to help
Action against software patentsGNOME2 LogoW3C logoRed Hat Logo
Made with Libxslt Logo

The XSLT C library for GNOME

How to help

Main Menu
Related links
API Indexes

You can help the project in various ways, the best thing to do first is to subscribe to the mailing-list as explained before, check the archives and the GNOME bug database::

  1. provide patches when you find problems
  2. provide the diffs when you port libxslt to a new platform. They may not be integrated in all cases but help pinpointing portability problems and
  3. provide documentation fixes (either as patches to the code comments or as HTML diffs).
  4. provide new documentations pieces (translations, examples, etc ...)
  5. Check the TODO file and try to close one of the items
  6. take one of the points raised in the archive or the bug database and provide a fix. Get in touch with me before to avoid synchronization problems and check that the suggested fix will fit in nicely :-)

Daniel Veillard

PK|0]*8@@node.gifnu[GIF87aܒ!6@@ =@@9 @|,`7!!@@ =@@8(86\M@9 @@x6!,64H@ 5(A16@\B`5j{(`6/ !\4= {@(156(h6@\$t7jL{/@X>`AX>*4!2/!!f@/tG 6q@$/_Xp>5@T8ޞ@@I=e`@ !\@$@p!5)c|f/p!5+@ *{` ,(7$ |`Q{` @`p85@|` A@ *|` ,H*\ȰÇ#JHŋ3jȱǏ CIɓ(S\ɲ˗0cʜIF6szĩϟ@9 JТH*ytӦNJJիXjʵׯ)vٳhӪ]˶۷p㒕,ݻx+߿(xÈ+^̸Ņ+,˘3k̹sʛA{RtfӤSUװc˞M۸sͻo/{xeu#<捡;-+֎5w߻ox?zzow~ooU'`1Ea[Vv ($h(U.H268S:>BiF&ՇJ6NFYRVVfTZv ^b)f҈jnYr vzQ~J&Љ6jFF ii(nj j"Ij*꫶r*kʫjgIln.kfΊ m^NK^;<-(kk覫.unA 碌 jfJ]z0D .c [R16lT=\ |W[qDM#<%SȎPSM5'ҋbP܂vJ]h\g5`m5_]6H[g}sv[Mڅ"wevЃ]xMZ,7؜K90]ާL˻8B6IIߧG_K밷6 3x Cy|>ϼns_:s'Kk*A_>;ߗw e4՗8eo/,M@ ~  &!hO`ص}pRsߌDȬ scZBՐ%F%`Ё.]6i"w"P)? {f}nJGMuKU)m82&;,8NFCc@y{t*JrBV,VQnrYcfY@VLh c2m?rNJ3fV5'iGs&1 g24뚈Bm)] 756(Vv <ňyJћ]f}~&IPJ~ƠC?XO-MA&A['Qn/! I>]J_rliB$Jmť#74c?dP39_U+L-*T=MSezԜX**2 +UHj&2;0U.dxsxi:T7隑tq!\/e˽;#87s=Nb(R|uLWk"LWTVG 6v# JZҚ$-\B[btlq}flnOBul*Zh hw3)3jV/l+6fw$kr}Dga ɮ׹9oW 06Ik0:վrᯒ\>’Mz_UC`#U'…MD^41wNRp(UX?xͻnvPKM0F쉝$sul5ߗ1?lUڎItb-d쳑e:e+ճBg\,?RRFXزU0lVI%n2/9H#fptCÁl*g kmtT rt7fQeå&UhSՈv5Z`jVԫ|wdY׈ַp}j_ˈد6vŔ}Sfٳv6h(!ik-S o5-=d[Α/1;Mf *]=iu5"x܌,u`lfx8#PX؃/Pi<įIbmsnr~Jzؒ6}Λ{l[: iUW v\Lz e;[Wv<+ݱRSg_ >/įO a: !Og~g1p-iF7/J;r>c6uRϡO=|dFW|R5{&XqA|'iK'؈[>$!Hxic\zLmP悳ea7cX;NƎPd7FQYnp9{P'G5igo %V􏊦V)GcVYGhXPuV"y$)7&N薒dӒ^9YODÑ3 %~BF 9'8 hEH5h/v]Szsz9t'ixiyǖeiQfF~tg!_җg8QjYECw`)xyaށ˨A+p)twFg/v6sSc!YI0Iuh)I} yi)!9z^9?gfbw')ᇣ>3t`(PJmdzɠX_ ]ԩs@~IH@?Zc*L3zeʦoʣ^1uJ_(V>sz)JʡaJU8?TWcJ>{Kjp婍Jg:I^z:8w8f{7X*aJ>^JaWG)wZV׬ B_Hڧe*.sh} U+Zb偯T8z::K  ,[;, +Zn ++§TI{%k^k# R4$- -[-*.f2,!8 4{۳9˰?mGIkA{MaKQlS DUkWYkl׵R*bvdir^Й}1"ێ 'b {ۑ hFKbs4*ʸ⸇fd\k{"'k" +˺a뺯i E+m+ bD_+˷kɻ$P w+FA4fHB۹+Yq[Af;+"^_ xn[yri;Ӛ\7/&[HPIq o"|N'̿$, , L, (e&JLNìIC 9ſO^|F API Alphabetic Index f-g for libxslt
Action against software patentsGNOME2 LogoW3C logoRed Hat Logo
Made with Libxslt Logo

The XSLT C library for GNOME

API Alphabetic Index f-g for libxslt

Main Menu
Related links
API Indexes

A-I J-R S-a b-c d-e f-g h-i j-m n-o p-p q-s t-u v-x y-z

Letter f:

factor
xsltSaveResultToFilename
failure
xsltAddKey
xsltAddStackElemList
xsltCompilePattern
xsltInitAllDocKeys
xsltParseStylesheetImport
xsltParseStylesheetInclude
xsltRegisterExtElement
xsltRegisterExtFunction
xsltRegisterExtPrefix
xsltRestoreDocumentNamespaces
xsltSaveResultTo
xsltSaveResultToFd
xsltSaveResultToFile
xsltSaveResultToFilename
xsltTestCompMatchList
failures
xsltGetNamespace
xsltGetPlainNamespace
fast
xsltCompilePattern
fields
XSLT_ITEM_COMMON_FIELDS
XSLT_ITEM_NAVIGATION_FIELDS
xsltFindTemplate
file
xsltSaveResultToFd
xsltSaveResultToFilename
xsltSecurityCheck
xsltSetGenericDebugFunc
xsltSetGenericErrorFunc
xsltTransformError
filename
xsltParseStylesheetFile
xsltRunStylesheet
xsltRunStylesheetUser
xsltSaveResultToFilename
files
XSLT_PARSE_OPTIONS
xsltRunStylesheet
xsltRunStylesheetUser
find
xsltDecimalFormatGetByName
xsltFindDocument
fine
xsltParseAnyXSLTElem
first
xsltAttrListTemplateProcess
xsltCopyNamespaceList
xsltSetGenericDebugFunc
xsltSetGenericErrorFunc
fixup
xsltGetNamespace
xsltGetPlainNamespace
flag
XSLT_STRANGE
XSLT_TODO
xsltFlagRVTs
flags
xsltXPathCompileFlags
following
xsltRunStylesheet
xsltRunStylesheetUser
foo
XSLT_FAST_IF
for-each
xsltForEach
forbid
xsltSecurityForbid
force
xsltSetGenericDebugFunc
xsltSetGenericErrorFunc
form
_xsltStackElem
xsltCompilePattern
format
xsltFormatNumberConversion
xsltNumberFormat
xsltTransformError
format-number
xsltFormatNumberConversion
xsltFormatNumberFunction
formats
xsltFormatNumberConversion
formatting
_xsltStylesheet
xsltNumberFormat
forwards-compatible
_xsltCompilerCtxt
_xsltCompilerNodeInfo
found
_xsltCompilerCtxt
_xsltStylesheet
xsltApplyOneTemplate
xsltCalibrateAdjust
xsltDocLoaderFunc
xsltExtElementLookup
xsltExtModuleElementLookup
xsltExtModuleElementPreComputeLookup
xsltExtModuleFunctionLookup
xsltExtModuleTopLevelLookup
xsltFindTemplate
xsltGetCNsProp
xsltGetExtInfo
xsltGetNamespace
xsltGetNsProp
xsltGetSecurityPrefs
xsltGetSpecialNamespace
xsltGetTemplate
xsltLoadStylesheetPI
xsltNewLocale
xsltVariableLookup
xsltXPathFunctionLookup
xsltXPathVariableLookup
fptr
XML_CAST_FPTR
fraction
xsltFormatNumberConversion
fractional
_xsltFormatNumberInfo
fraction}{suffix}
xsltFormatNumberConversion
fragment
_xsltTransformContext
xsltExtensionInstructionResultFinalize
xsltRegisterLocalRVT
xsltRegisterPersistRVT
xsltRegisterTmpRVT
fragments
XSLT_IS_RES_TREE_FRAG
XSLT_MARK_RES_TREE_FRAG
_xsltTransformContext
xsltExtensionInstructionResultFinalize
xsltExtensionInstructionResultRegister
xsltFlagRVTs
free
XSLT_RUNTIME_EXTRA_FREE
xsltApplyOneTemplate
xsltElemPreCompDeallocator
xsltEvalTemplateString
xsltExtensionInstructionResultFinalize
xsltFreeLocale
xsltFreeSecurityPrefs
xsltGetNsProp
xsltGetProfileInformation
xsltPointerListClear
xsltPointerListFree
xsltXPathCompile
xsltXPathCompileFlags
freed
_xsltTransformContext
xsltDocLoaderFunc
xsltGetQNameURI
xsltLoadStylesheetPI
xsltParseStylesheetDoc
xsltPointerListFree
xsltRegisterLocalRVT
xsltRegisterPersistRVT
xsltRegisterTmpRVT
xsltStrxfrm
frees
xsltReleaseRVT
full
xsltSplitQName
func:result
XSLT_RVT_FUNC_RESULT
function-available
xsltFunctionAvailableFunction
function-calling
xsltExtensionInstructionResultFinalize
functions
XSLT_ITEM_COMPATIBILITY_FIELDS
_xsltTransformContext
xsltApplyOneTemplate
xsltDebugDumpExtensions
xsltRegisterAllFunctions
future
XSLT_ITEM_NAVIGATION_FIELDS
xsltApplyOneTemplate

Letter g:

garbage
xsltExtensionInstructionResultFinalize
xsltExtensionInstructionResultRegister
xsltRegisterLocalRVT
xsltRegisterPersistRVT
xsltRegisterTmpRVT
gathering
xsltTimestamp
gcc
XML_CAST_FPTR
gcc4
XML_CAST_FPTR
general
XSLT_REGISTER_FUNCTION_LOOKUP
XSLT_REGISTER_VARIABLE_LOOKUP
generally
xsltInitElemPreComp
generate
xsltLoadStylesheetPI
xsltRunStylesheet
xsltRunStylesheetUser
generate-id
xsltGenerateIdFunction
generated
xsltAttrTemplateProcess
xsltCompilePattern
xsltRunStylesheet
xsltRunStylesheetUser
xsltSaveResultToString
generates
xsltCompilePattern
get
XSLT_CCTXT
XSLT_GET_INTERNAL_NSMAP
_xsltPrincipalStylesheetData
_xsltStylesheet
xsltAttrListTemplateProcess
xsltDoSortFunction
xsltEvalXPathString
xsltEvalXPathStringNs
xsltGetCNsProp
xsltGetNsProp
xsltGetSecurityPrefs
given
_xsltStackElem
_xsltTemplate
xsltAttrTemplateValueProcess
xsltAttrTemplateValueProcessNode
xsltCheckExtPrefix
xsltCheckExtURI
xsltEvalAVT
xsltEvalTemplateString
xsltFreeStyleDocuments
xsltGetExtData
xsltGetNamespace
xsltGetSpecialNamespace
xsltLoadStylesheetPI
xsltLocalVariablePop
xsltProfileStylesheet
xsltRegisterExtPrefix
xsltSetTransformErrorFunc
xsltStyleGetExtData
xsltStyleStylesheetLevelGetExtData
xsltVariableLookup
gives
xsltTransformError
giving
xsltEvalOneUserParam
xsltQuoteOneUserParam
global
XSLT_RVT_GLOBAL
_xsltElemPreComp
_xsltTransformContext
xsltCleanupGlobals
xsltDoSortFunction
xsltEvalGlobalVariables
xsltEvalOneUserParam
xsltEvalUserParams
xsltFlagRVTs
xsltFreeGlobalVariables
xsltInitCtxtKeys
xsltInitGlobals
xsltParseGlobalVariable
xsltQuoteOneUserParam
xsltSetCtxtSortFunc
xsltSetSortFunc
goes
XSLT_RVT_VARIABLE
goto
CHECK_STOPPEDE
grafted
xsltAttrListTemplateProcess
xsltAttrTemplateProcess
group
_xsltFormatNumberInfo
grouping
xsltFormatNumberConversion

A-I J-R S-a b-c d-e f-g h-i j-m n-o p-p q-s t-u v-x y-z

Daniel Veillard

PK|0]g object.gifnu[GIF87ayܒ6@@9 @|`7!!@@ =@@ 8((6\M@9 @@x6 !6 ;H@ 5(A86@\B`j@{`7/ !L;4 {6@85!(X6@\$t7j<{/@X>AX>*@@;!@9/!fdG 6!q@_w9t@I=6e\@t69@c|f69+@ *{` 7|`Q{` @p89y|`A@ *|`,yH*\ȰÇ#JHŋ3jȱǏ CIɓ(S\ɲ˗0cʤ6 ';,ϙH*]ʴӧPy:ԜTV5UέVKٳhSv-jW_#شx˷Ʒ9[0WXZT췱ǐ#dp<19jJ`E%^ͺG9L]tqoI1jҺG&캸ȡ[x;;o|uS=L\֯snt>+kO/[^m헞fu7 {%`y7\v vᇍ-:H`W"|0(Shmno$byu3i-QVPLI*i\vu_)fIičԋj&DiN0&FYCIp]^sj'hrIBP)vғjU)饥(wҡhZY .~h*a)Z^b B&+gAݎN,Y̱͊{hc*Q})kYܕ(ܻ ~oZ&+ϝ!fjp0k+(YýjTiY|L iOˎ"sTJ;vtz+z] ;cCK5RCg}g&i^Th'1x{u]5wkvh h&'i ߃$D3Ψ~6w.7@-!\[.VDF|n䕣.{Ǽ/m켯dwrnuBkȗٻI| ˻bzzaO#uՋԼ7|dyy\?fn\ > f4d.H~k=]VSGW+ 1JD(2hzyi.[9<0?&p.#*ozaFH=P& *#NMtzWUB\ :'$Sw=an8S f&bZ !Za1/!_)gt#W,92NjUol_h[ HMB1-!7.҃Zɺ(Ju%rR^.:C2ĴSY8ΕDWHX"7 4 XlZ\6COS= #fA RTxRfsg'M1k1A(Bb«"(X7j 2X7˜$Qî!ΝKrkj(H] ;*YI9I2G53.&GVZ Syhў<4"M)TDMD]$+Cǣ/uu 4͸ȶb5a-kWWkFB+F GޔMW7x)v ^˒}Ԭ\@ʪu*GÚֲ Vi?Ϟdb]ZK1TҐN[!Wꅖ9Fz1k%?_(rVzq ׻jl\8FŮDZTi:~[e`C%Ym|YK QDy%~q  $?T)d__ɷ-?Qdؿ~~7 2rq5U0:W1K~d9v]%[&&OvYK6]+quC,eLj6dO-;=s̃E3|QrZ2_$e[zd15=BϏv7'2=22L<ӢsIDJk .`CVטXmaegZruݴ inۏ55rϚ6!e|qB=+i컚Mpx;B',.'z1M̏i|bwUj̫!{uTԄxC>3W܈>Q9aעQT\^GNo7}S/.ETxB|[gԗ mt~;Y9_#ud⎔ [>M !bHޝo,w sßl< ;F$hݞbkc+y?C_H F'R9I} nǗ%A_xѧGL zx̡}s^)9xw"ۥx vC`/F7||Q*֟wbR/yeßh_|WyeGzfTd|٦SrvGxp'%=˶jvyb~ߖ~~cu,Gr&S=o}Q|8{ X]D}4P;Gu "L47frW[=U.jWTjTBwt0~K||Z&Vu6sqEwX(Ggt\|ECҤxܢoS &Tz=4^3ȅWoe\vUሂ` BƅeDZikIls(Wl%_>(T؉XYȂYXu$rxg|b0Ԋ 󓋘XKAVȈ@ʘ>phoxz ϨgMH4uo6)eÌÇZՂ CNӈq𸉓NI)8ʤub rwM 6YsՇ>isP-*lƃ9 xt~%*-,q!Ʉ$)thHZZ"7"_9:Y^1iȒ+ }GdkfEi(JGvYO7;%xhhW{=sʳ9I"{ ʴBO QFH+Y[]{VK2G;%^˶)fZs i[9|[~Σ[*H_۸#ĸ[ca ۹WhC[*ۺ;[;PK|0]޻I|h|hlibxslt-api.xmlnu[ interface for the XSLT attribute handling this module handles the specificities of attribute and attribute groups processing. Daniel Veillard interface for the document handling implements document loading and cache (multiple document() reference for the same resources must be equal. Daniel Veillard interface for the extension support This provide the API needed for simple and module extension support. Daniel Veillard interface for the non-standard features implement some extension outside the XSLT namespace but not EXSLT with is in a different library. Daniel Veillard interface for the XSLT functions not from XPath a set of extra functions coming from XSLT but not in XPath Daniel Veillard and Bjorn Reese <breese@users.sourceforge.net> interface for the XSLT import support macros and fuctions needed to implement and access the import tree Daniel Veillard interface for the key matching used in key() and template matches. implementation of the key mechanims. Daniel Veillard interface for the XSLT namespace handling set of function easing the processing and generation of namespace nodes in XSLT. Daniel Veillard Implementation of the XSLT number functions Implementation of the XSLT number functions Bjorn Reese <breese@users.sourceforge.net> and Daniel Veillard interface for the pattern matching used in template matches. the implementation of the lookup of the right template for a given node must be really fast in order to keep decent performances. Daniel Veillard precomputing stylesheets this is the compilation phase, where most of the stylesheet is "compiled" into faster to use data. Daniel Veillard interface for the libxslt security framework the libxslt security framework allow to restrict the access to new resources (file or URL) from the stylesheet at runtime. Daniel Veillard interface for the template processing This set of routine encapsulates XPath calls and Attribute Value Templates evaluation. Daniel Veillard the XSLT engine transformation part. This module implements the bulk of the actual Daniel Veillard interface for the variable matching and lookup. interface for the variable matching and lookup. Daniel Veillard Interfaces, constants and types related to the XSLT engine Interfaces, constants and types related to the XSLT engine Daniel Veillard internal data structures, constants and functions Internal data structures, constants and functions used by the XSLT engine. They are not part of the API or ABI, i.e. they can change without prior notice, use carefully. Daniel Veillard macros for marking symbols as exportable/importable. macros for marking symbols as exportable/importable. Igor Zlatkovic <igor@zlatkovic.com> Locale handling Interfaces for locale handling. Needed for language dependent sorting. Nick Wellnhofer set of utilities for the XSLT engine interfaces for the utilities module of the XSLT engine. things like message handling, profiling, and other generally useful routines. Daniel Veillard Macro to check if the XSLT processing should be stopped. Will return from the function. Macro to check if the XSLT processing should be stopped. Will return from the function with a 0 value. Macro to check if the XSLT processing should be stopped. Will goto the error: label. quick check for xslt namespace attribute Checks that the element pertains to XSLT namespace. quick check whether this is an xslt element Checks the value of an element in XSLT namespace. Check that a node is a 'real' one: document, element, text or attribute. check for bit 15 set Special value for undefined namespace, internal Macro to do a casting from an object pointer to a function pointer without encountering a warning from gcc #define XML_CAST_FPTR(fptr) (*(void **)(&fptr)) This macro violated ISO C aliasing rules (gcc4 on s390 broke) so it is disabled now get pointer to compiler context The XSLT "vendor" URL for this processor. The XSLT "vendor" string for this processor. The default version of XSLT supported. Internal define to enable usage of xmlXPathCompiledEvalToBoolean() for XSLT "tests"; e.g. in <xsl:if test="/foo/bar"> A macro to import intergers from the stylesheet cascading order. A macro to import pointers from the stylesheet cascading order. get pointer to namespace map check for namespace mapping internal macro to test tree fragments check if the argument is a text node Common fields used for all items. Fields for API compatibility to the structure _xsltElemPreComp which is used for extension functions. Note that @next is used for storage; it does not reflect a next sibling in the tree. TODO: Evaluate if we really need such a compatibility. Currently empty. TODO: It is intended to hold navigational fields in the future. The in-scope namespaces. This is the libxslt namespace for specific extensions. Macro indicating that there's no extended locale support Macro indicating to use POSIX locale extensions Macro indicating to use WinAPI for extended locale support internal macro to set up tree fragments Max number of specified xsl:sort on an element. The XSLT specification namespace. The set of options to pass to an xmlReadxxx when loading files for XSLT consumption. Specific value for pattern without priority expressed. Internal define to enable on-demand xsl:key computation. That's the only mode now but the define is kept for compatibility Internal define to enable the refactored variable part of libxslt Internal define to enable the optimization of the compilation of XPath expressions. Registering macro, not general purpose at all but used in different modules. Registering macro, not general purpose at all but used in different modules. Macro used to define extra information stored in the context Macro used to free extra information stored in the context Macro used to access extra information stored in the context RVT is part of results returned with func:result. The RVT won't be destroyed after exiting a template and will be reset to XSLT_RVT_LOCAL or XSLT_RVT_VARIABLE in the template that receives the return value. RVT is part of a global variable. RVT is destroyed after the current instructions ends. RVT is part of a local variable and destroyed after the variable goes out of scope. This is Michael Kay's Saxon processor namespace for extensions. Macro to flag that a problem was detected internally. Sampling precision for profiling Macro to flag unimplemented blocks. Control the type of xsl debugtrace messages emitted. This is the Apache project XALAN processor namespace for extensions. This is James Clark's XT processor namespace for extensions. Add template "call" to call stack Drop the topmost item off the call stack If either cur or node are a breakpoint, or xslDebugStatus in state where debugging must occcur at this time then transfer control to the xslDebugBreak function add a key definition to a stylesheet Push an element list onto the stack. Register the XSLT pattern associated to @cur Allocate an extra runtime information slot statically while compiling the stylesheet and return its number Allocate an extra runtime information slot at run-time and return its number This make sure there is a slot ready in the transformation context Apply the xsl:use-attribute-sets. If @attrSets is NULL, then @inst will be used to exctract this value. If both, @attrSets and @inst, are NULL, then this will do nothing. Process the XSLT apply-imports element. Processes a sequence constructor on the current node in the source tree. @params are the already computed variable stack items; this function pushes them on the variable stack, and pops them before exiting; it's left to the caller to free or reuse @params afterwards. The initial states of the variable stack will always be restored before this function exits. NOTE that this does *not* initiate a new distinct variable scope; i.e. variables already on the stack are visible to the process. The caller's side needs to start a new variable scope if needed (e.g. in exsl:function). @templ is obsolete and not used anymore (e.g. <exslt:function> does not provide a @templ); a non-NULL @templ might raise an error in the future. BIG NOTE: This function is not intended to process the content of an xsl:template; it does not expect xsl:param instructions in @list and will report errors if found. Called by: - xsltEvalVariable() (variables.c) - exsltFuncFunctionFunction() (libexsl/functions.c) Strip the unwanted ignorable spaces from the input tree Apply the stylesheet to the document NOTE: This may lead to a non-wellformed output XML wise ! Apply the stylesheet to the document and allow the user to provide its own transformation context. Processes the XSLT 'apply-templates' instruction on the current node. Processes all attributes of a Literal Result Element. Attribute references are applied via xsl:use-attribute-set attributes. Copies all non XSLT-attributes over to the @target element and evaluates Attribute Value Templates. Called by xsltApplySequenceConstructor() (transform.c). Process one attribute of a Literal Result Element (in the stylesheet). Evaluates Attribute Value Templates and copies the attribute over to the result element. This does *not* process attribute sets (xsl:use-attribute-set). Process the given node and return the new string value. Process the given string, allowing to pass a namespace mapping context and return the new string value. Called by: - xsltAttrTemplateValueProcess() (templates.c) - xsltEvalAttrValueTemplate() (templates.c) QUESTION: Why is this function public? It is not used outside of templates.c. Process the xslt attribute node on the source node Used for to correct the calibration for xsltTimestamp() Processes the XSLT call-template instruction on the source node. Check if the given prefix is one of the declared extensions. This is intended to be called only at compile-time. Called by: xsltGetInheritedNsList() (xslt.c) xsltParseTemplateContent (xslt.c) Check if the given prefix is one of the declared extensions. This is intended to be called only at compile-time. Called by: xsltPrecomputeStylesheet() (xslt.c) xsltParseTemplateContent (xslt.c) Check if the resource is allowed to be read Check if the resource is allowed to be written, if necessary makes some preliminary work like creating directories Processes the xsl:choose instruction on the source node. Unregister all global variables set up by the XSLT library Cleanup the state of the templates used by the stylesheet and the ones it imports. Process the xslt comment node on the source node Precompile an attribute in a stylesheet, basically it checks if it is an attrubute value template, and if yes establish some structures needed to process it at transformation time. Compile the XSLT pattern and generates a list of precompiled form suitable for fast matching. [1] Pattern ::= LocationPathPattern | Pattern '|' LocationPathPattern reorder the current node list accordingly to the set of sorting requirement provided by the array of nodes. Execute the XSLT-copy instruction on the source node. Copies a namespace node (declaration). If @elem is not NULL, then the new namespace will be declared on @elem. Do a copy of an namespace list. If @node is non-NULL the new namespaces are added automatically. This handles namespaces aliases. This function is intended only for *internal* use at transformation-time for copying ns-declarations of Literal Result Elements. Called by: xsltCopyTreeInternal() (transform.c) xsltShallowCopyElem() (transform.c) REVISIT: This function won't be used in the refactored code. Process the XSLT copy-of instruction. Adds @string to a newly created or an existent text node child of @target. Creates a Result Value Tree (the XSLT 1.0 term for this is "Result Tree Fragment") Process an debug node Dumps a list of the registered XSLT extension functions and elements Get the current default debug tracing level mask Set the default debug tracing level mask Find decimal-format by name Find decimal-format by QName reorder the current node list accordingly to the set of sorting requirement provided by the arry of nodes. reorder the current node list accordingly to the set of sorting requirement provided by the arry of nodes. This is a wrapper function, the actual function used is specified using xsltSetCtxtSortFunc() to set the context specific sort function, or xsltSetSortFunc() to set the global sort function. If a sort function is set on the context, this will get called. Otherwise the global sort function is called. An xsltDocLoaderFunc is a signature for a function which can be registered to load document not provided by the compilation or transformation API themselve, for example when an xsl:import, xsl:include is found at compilation time or when a document() call is made at runtime. Pre process an XSLT-1.1 document element Process an EXSLT/XSLT-1.1 document element Implement the document() XSLT function node-set document(object, node-set?) reorder the current node list @list accordingly to the document order This function is slow, obsolete and should not be used anymore. Deallocates an #xsltElemPreComp structure. Process the xslt element node on the source node Implement the element-available() XSLT function boolean element-available(string) Process the given AVT, and return the new string value. Evaluate a attribute value template, i.e. the attribute value can contain expressions contained in curly braces ({}) and those are substituted by they computed value. Evaluates all global variables and parameters of a stylesheet. For internal use only. This is called at start of a transformation. This is normally called from xsltEvalUserParams to process a single parameter from a list of parameters. The @value is evaluated as an XPath expression and the result is stored in the context's global variable/parameter hash table. To have a parameter treated literally (not as an XPath expression) use xsltQuoteUserParams (or xsltQuoteOneUserParam). For more details see description of xsltProcessOneUserParamInternal. Check if an attribute value template has a static value, i.e. the attribute value does not contain expressions contained in curly braces ({}) Processes the sequence constructor of the given instruction on @contextNode and converts the resulting tree to a string. This is needed by e.g. xsl:comment and xsl:processing-instruction. Evaluate the global variables of a stylesheet. This needs to be done on parsed stylesheets before starting to apply transformations. Each of the parameters is evaluated as an XPath expression and stored in the global variables/parameter hash table. If you want your parameter used literally, use xsltQuoteUserParams. Process the expression using XPath and evaluate the result as an XPath predicate Process the expression using XPath and get a string Process the expression using XPath, allowing to pass a namespace mapping context and get a string Looks up an extension element. @ctxt can be NULL to search only in module elements. A function called at initialization time of an XSLT extension module. Looks up an extension module element Looks up an extension module element pre-computation function Looks up an extension module function Looks up an extension module top-level element A function called at shutdown time of an XSLT extension module. Finalizes the data (e.g. result tree fragments) created within a value-returning process (e.g. EXSLT's function). Tree fragments marked as being returned by a function are set to normal state, which means that the fragment garbage collector will free them after the function-calling process exits. Marks the result of a value-returning extension instruction in order to avoid it being garbage collected before the extension instruction exits. Note that one still has to additionally register any newly created tree fragments (via xsltCreateRVT()) with xsltRegisterLocalRVT(). Try to find a document within the XSLT transformation context. This will not find document infos for temporary Result Tree Fragments. Find strip-space or preserve-space informations for an element respect the import precedence or the wildcards Finds the named template, apply import precedence rule. REVISIT TODO: We'll change the nameURI fields of templates to be in the string dict, so if the specified @nameURI is in the same dict, then use pointer comparison. Check if this can be done in a sane way. Maybe this function is not needed internally at transformation-time if we hard-wire the called templates to the caller. Updates ownership information of RVTs in @obj according to @val. @val = XSLT_RVT_FUNC_RESULT for the result of an extension function, so its RVTs won't be destroyed after leaving the returning scope. @val = XSLT_RVT_LOCAL for the result of an extension function to reset the state of its RVTs after it was returned to a new scope. @val = XSLT_RVT_GLOBAL for parts of global variables. Process the xslt for-each node on the source node format-number() uses the JDK 1.1 DecimalFormat class: http://java.sun.com/products/jdk/1.1/docs/api/java.text.DecimalFormat.html Structure: pattern := subpattern{;subpattern} subpattern := {prefix}integer{.fraction}{suffix} prefix := '\\u0000'..'\\uFFFD' - specialCharacters suffix := '\\u0000'..'\\uFFFD' - specialCharacters integer := '#'* '0'* '0' fraction := '0'* '#'* Notation: X* 0 or more instances of X (X | Y) either X or Y. X..Y any character from X up to Y, inclusive. S - T characters in S, except those in T Special Characters: Symbol Meaning 0 a digit # a digit, zero shows as absent . placeholder for decimal separator , placeholder for grouping separator. ; separates formats. - default negative prefix. % multiply by 100 and show as percentage ? multiply by 1000 and show as per mille X any other characters can be used in the prefix or suffix ' used to quote special characters in a prefix or suffix. Implement the format-number() XSLT function string format-number(number, string, string?) Free up the memory associated to the attribute value templates Free up the memory used by attribute sets Free up the memory allocated by all the elements of @comp Free the XSLT extension data Free the keys associated to a document Free up all the space used by the loaded documents Free up the memory used by XSLT extensions in a stylesheet Free up the data associated to the global variables its value. Free up the memory used by XSLT keys in a stylesheet Frees a locale created with xsltNewLocale Cleanup function for the locale support on shutdown Free up the memory used by namespaces aliases Frees all registered result value trees (Result Tree Fragments) of the transformation. Internal function; should not be called by user-code. Free up a security preference block Free up the memory allocated by @elem Frees the node-trees (and xsltDocument structures) of all stylesheet-modules of the stylesheet-level represented by the given @style. Free up the memory allocated by all precomputed blocks Free up the memory allocated by @style Free up the memory used by xsltAddTemplate/xsltGetTemplate mechanism Free up the memory allocated by @ctxt Implement the function-available() XSLT function boolean function-available(string) Implement the node-set() XSLT function node-set node-set(result-tree) This function is available in libxslt, saxon or xt namespace. Implement the generate-id() XSLT function string generate-id(node-set?) Similar to xmlGetNsProp() but with a slightly different semantic Search and get the value of an attribute associated to a node This attribute has to be anchored in the namespace specified, or has no namespace and the element is in that namespace. This does the entity substitution. This function looks in DTD attribute declaration for #FIXED or default declaration values unless DTD use has been turned off. Get xslDebugStatus. Get the default security preference application-wide Retrieve the data associated to the extension module in this given transformation. looks up URI in extInfos of the stylesheet Looks up a key of the in current source doc (the document info on @ctxt->document). Computes the key if not already done for the current source doc. Find a matching (prefix and ns-name) ns-declaration for the requested @ns->prefix and @ns->href in the result tree. If none is found then a new ns-declaration will be added to @resultElem. If, in this case, the given prefix is already in use, then a ns-declaration with a modified ns-prefix be we created. Called by: - xsltCopyPropList() (*not* anymore) - xsltShallowCopyElement() - xsltCopyTreeInternal() (*not* anymore) - xsltApplySequenceConstructor() (*not* in the refactored code), - xsltElement() (*not* anymore) Similar to xmlGetNsProp() but with a slightly different semantic Search and get the value of an attribute associated to a node This attribute has to be anchored in the namespace specified, or has no namespace and the element is in that namespace. This does the entity substitution. This function looks in DTD attribute declaration for #FIXED or default declaration values unless DTD use has been turned off. Obsolete. *Not* called by any Libxslt/Libexslt function. Exaclty the same as xsltGetNamespace(). This function should be called after the transformation completed to extract template processing profiling informations if availble. The informations are returned as an XML document tree like <?xml version="1.0"?> <profile> <template rank="1" match="*" name="" mode="" calls="6" time="48" average="8"/> <template rank="2" match="item2|item3" name="" mode="" calls="10" time="30" average="3"/> <template rank="3" match="item1" name="" mode="" calls="5" time="17" average="3"/> </profile> The caller will need to free up the returned tree with xmlFreeDoc() This function analyzes @name, if the name contains a prefix, the function seaches the associated namespace in scope for it. It will also replace @name value with the NCName, the old value being freed. Errors in the prefix lookup are signalled by setting @name to NULL. NOTE: the namespace returned is a pointer to the place where it is defined and hence has the same lifespan as the document holding it. This function is similar to xsltGetQNameURI, but is used when @name is a dictionary entry. Lookup the security option to get the callback checking function Find a matching (prefix and ns-name) ns-declaration for the requested @nsName and @nsPrefix in the result tree. If none is found then a new ns-declaration will be added to @resultElem. If, in this case, the given prefix is already in use, then a ns-declaration with a modified ns-prefix be we created. Note that this function's priority is to preserve ns-prefixes; it will only change a prefix if there's a namespace clash. If both @nsName and @nsPrefix are NULL, then this will try to "undeclare" a default namespace by declaring an xmlns="". Finds the template applying to this node, if @style is non-NULL it means one needs to look for the next imported template in scope. Read one UTF8 Char from @utf Function copied from libxml2 xmlGetUTF8Char() ... to discard ultimately and use the original API Provides the default state for XInclude processing Processes the xsl:if instruction on the source node. Initializes the processor (e.g. registers built-in extensions, etc.) INTERNAL ROUTINE ONLY Check if any keys on the current document need to be computed Initialize the set of modules with registered stylesheet data Computes the key tables this key and for the current input document. Computes all the keys tables for the current input document. Should be done before global varibales are initialized. NOTE: Not used anymore in the refactored code. Initializes an existing #xsltElemPreComp structure. This is usefull when extending an #xsltElemPreComp to store precomputed data. This function MUST be called on any extension element precomputed data struct. Initialize the global variables for extensions Check if a string is ignorable Implement the key() XSLT function node-set key(string, object) Try to load a document (not a stylesheet) within the XSLT transformation context Try to load a stylesheet document within the XSLT transformation context This function tries to locate the stylesheet PI in the given document If found, and if contained within the document, it will extract that subtree to build the stylesheet to process @doc (doc itself will be modified). If found but referencing an external document it will attempt to load it and generate a stylesheet from it. In both cases, the resulting stylesheet and the document need to be freed once the transformation is done. Pops all variable values at the given @depth from the stack. Places the variable onto the local variable stack Compares two strings transformed with xsltStrxfrm Process and xsl:message construct Read the stylesheet-prefix and result-prefix attributes, register them as well as the corresponding namespace. Checks whether that stylesheet requires white-space stripping Register a new document, apply key computations Creates and initializes an #xsltElemPreComp Creates a new locale of an opaque system dependent type based on the language tag. Create a new security preference block Register a new document, apply key computations Create a new XSLT Stylesheet Create a new XSLT TransformContext Find the next stylesheet in import precedence. This is a hashtable scanner function to normalize the compiled steps of an imported stylesheet. Process the xslt number node on the source node Convert one number. Parses, validates the content models and compiles XSLT instructions. parse an XSLT transformation param declaration and record its value. Parses a global XSLT 'variable' declaration at compilation time and registers it Parses a "template" content (or "sequence constructor" in XSLT 2.0 terms). This will additionally remove xsl:text elements from the tree. parse an XSLT stylesheet attribute-set element Processes an xsl:with-param instruction at transformation time. The value is compute, but not recorded. NOTE that this is also called with an *xsl:param* element from exsltFuncFunctionFunction(). parse an XSLT stylesheet, building the associated structures. doc is kept as a reference within the returned stylesheet, so changes to doc after the parsing will be reflected when the stylesheet is applied, and the doc is automatically freed when the stylesheet is closed. Load and parse an XSLT stylesheet parse an XSLT stylesheet import element parse an XSLT stylesheet building the associated structures except the processing not needed for imported documents. parse an XSLT stylesheet include element parse an XSLT stylesheet output element and record information related to the stylesheet output Registers a local XSLT 'param' declaration at transformation time and evaluates its value. Parses an XSLT stylesheet, adding the associated structures. Called by: xsltParseStylesheetImportedDoc() (xslt.c) xsltParseStylesheetInclude() (imports.c) Registers a local XSLT 'variable' instruction at transformation time and evaluates its value. parse a template content-model Clean-up the template content from unwanted ignorable blank nodes and process xslt:text Adds an item to the list. Resets the list, but does not free the allocated array and does not free the content of the list. Creates an xsltPointerList structure. Frees the xsltPointerList structure. This does not free the content of the list. Precomputes an extension module element Display the context of an error. Process the source node. Process the xslt processing-instruction node on the source node Apply the stylesheet to the document and dump the profiling to the given output. This is normally called from xsltQuoteUserParams to process a single parameter from a list of parameters. The @value is stored in the context's global variable/parameter hash table. Similar to xsltEvalUserParams, but the values are treated literally and are * *not* evaluated as XPath expressions. This should be done on parsed stylesheets before starting to apply transformations. Registers all default XSLT elements in this context Registers the built-in extensions Registers all default XSLT functions in this context Registers an extension element Registers an extension function Register an XSLT extension module to the library. Registers an extension module element. Register an XSLT extension module to the library. Registers an extension module function. Registers an extension module top-level element. Registers an extension namespace This is called from xslt.c during compile-time. The given prefix is not needed. Called by: xsltParseExtElemPrefixes() (new function) xsltRegisterExtPrefix() (old function) Registers the built-in extensions. This function is deprecated, use xsltRegisterAllExtras instead. Registers a result value tree (XSLT 1.0 term: Result Tree Fragment) in the RVT garbage collector. The fragment will be freed when the instruction which created the fragment exits. Register the result value tree (XSLT 1.0 term: Result Tree Fragment) in the fragment garbage collector. The fragment will be freed when the transformation context is freed. Registers the test module Registers the result value tree (XSLT 1.0 term: Result Tree Fragment) in the garbage collector. The fragment will be freed at the exit of the currently instantiated xsl:template. Obsolete; this function might produce massive memory overhead, since the fragment is only freed when the current xsl:template exits. Use xsltRegisterLocalRVT() instead. Either frees the RVT (which is an xmlDoc) or stores it in the context's cache for later reuse. resolve the references between attribute sets. Restore the namespaces for the document Apply the stylesheet to the document and generate the output according to @output @SAX and @IObuf. It's an error to specify both @SAX and @IObuf. NOTE: This may lead to a non-wellformed output XML wise ! NOTE: This may also result in multiple files being generated NOTE: using IObuf, the result encoding used will be the one used for creating the output buffer, use the following macro to read it from the stylesheet XSLT_GET_IMPORT_PTR(encoding, style, encoding) NOTE: using SAX, any encoding specified in the stylesheet will be lost since the interface uses only UTF8 Apply the stylesheet to the document and generate the output according to @output @SAX and @IObuf. It's an error to specify both @SAX and @IObuf. NOTE: This may lead to a non-wellformed output XML wise ! NOTE: This may also result in multiple files being generated NOTE: using IObuf, the result encoding used will be the one used for creating the output buffer, use the following macro to read it from the stylesheet XSLT_GET_IMPORT_PTR(encoding, style, encoding) NOTE: using SAX, any encoding specified in the stylesheet will be lost since the interface uses only UTF8 Save the profiling informations on @output Save the result @result obtained by applying the @style stylesheet to an I/O output channel @buf Save the result @result obtained by applying the @style stylesheet to an open file descriptor This does not close the descriptor. Save the result @result obtained by applying the @style stylesheet to an open FILE * I/O. This does not close the FILE @file Save the result @result obtained by applying the @style stylesheet to a file or @URL Save the result @result obtained by applying the @style stylesheet to a new allocated string. Function used to always allow an operation User provided function to check the value of a string like a file path or an URL ... Function used to always forbid an operation Change the default parser option passed by the XSLT engine to the parser when using document() loading. Set the security preference for a specific transformation Function to set the handler for XSLT sorting for the specified context. If the handler is NULL, then the global sort function will be called This function allow to plug a debugger into the XSLT library @block points to a block of memory containing the address of @no callback routines. This function sets the value of xslDebugStatus. Set the default security preference application-wide Function to reset the handler and the error context for out of context error messages. This simply means that @handler will be called for subsequent error messages while not parsing or validating. And @ctx will be passed as first argument to @handler One can simply force messages to be emitted to another FILE * than stderr by setting @ctx to this file handle and @handler to NULL. Function to reset the handler and the error context for out of context error messages. This simply means that @handler will be called for subsequent error messages while not parsing nor validating. And @ctx will be passed as first argument to @handler One can simply force messages to be emitted to another FILE * than stderr by setting @ctx to this file handle and @handler to NULL. Set the new function to load document, if NULL it resets it to the default function. Update the security option to use the new callback checking function Function to reset the global handler for XSLT sorting. If the handler is NULL, the default sort function will be used. Function to reset the handler and the error context for out of context error messages specific to a given XSLT transromation. This simply means that @handler will be called for subsequent error messages while running the transformation. Set whether XInclude should be processed on document being loaded by default Shutdown the set of modules loaded Shutdown the set of modules loaded function attached to xsl:sort nodes, but this should not be called directly Signature of the function to use during sorting Split QNames into prefix and local names, both allocated from a dictionary. Transforms a string according to locale. The transformed string must then be compared with xsltLocaleStrcmp and freed with xmlFree. A function called at initialization time of an XSLT extension module. A function called at shutdown time of an XSLT extension module. Retrieve the data associated to the extension module in this given stylesheet. Called by: xsltRegisterExtPrefix(), ( xsltExtElementPreCompTest(), xsltExtInitTest ) Precompute an XSLT stylesheet element Retrieve the data associated to the extension module in this given stylesheet. Implement the system-property() XSLT function object system-property(string) Obsolete. Don't use it. Test whether the node matches one of the patterns in the list Process the xslt text node on the source node Used for gathering profiling data Display and format an error messages, gives file, line, position and extra parameters, will use the specific transformation context if available Signature of the function associated to elements part of the stylesheet language like xsl:if or xsl:apply-templates. Uninitializes the processor. Implement the unparsed-entity-uri() XSLT function string unparsed-entity-uri(string) Unregister an XSLT extension module from the library. Unregisters an extension module element Unregisters an extension module function Unregisters an extension module top-level element Process the xslt value-of node on the source node Search in the Variable array of the context for the given variable value. Compile an XPath expression Compile an XPath expression This is the entry point when a function is needed by the XPath interpretor. Provides the XSLT transformation context from the XPath transformation context. This is useful when an XPath function in the extension module is called by the XPath interpreter and that the XSLT context is needed for example to retrieve the associated data pertaining to this XSLT transformation. This is the entry point when a varibale is needed by the XPath interpretor. PK|0]sssAPIchunk8.htmlnu[ API Alphabetic Index n-o for libxslt
Action against software patentsGNOME2 LogoW3C logoRed Hat Logo
Made with Libxslt Logo

The XSLT C library for GNOME

API Alphabetic Index n-o for libxslt

Main Menu
Related links
API Indexes

A-I J-R S-a b-c d-e f-g h-i j-m n-o p-p q-s t-u v-x y-z

Letter n:

name=
xsltGetProfileInformation
nameURI
xsltFindTemplate
named
_xsltStylesheet
xsltFindTemplate
names
_xsltPrincipalStylesheetData
xsltApplyStylesheet
xsltApplyStylesheetUser
xsltProfileStylesheet
xsltQuoteUserParams
xsltRunStylesheet
xsltRunStylesheetUser
xsltSplitQName
namespace-alias
_xsltStylesheet
namespaces
XSLT_ITEM_NSINSCOPE_FIELDS
_xsltCompilerNodeInfo
_xsltKeyDef
_xsltPrincipalStylesheetData
_xsltStylePreComp
_xsltStylesheet
_xsltTemplate
xsltCopyNamespaceList
xsltEvalXPathPredicate
xsltEvalXPathStringNs
xsltFreeNamespaceAliasHashes
xsltRestoreDocumentNamespaces
navigational
XSLT_ITEM_NAVIGATION_FIELDS
necessary
xsltCheckWrite
xsltExtensionInstructionResultRegister
need
XSLT_ITEM_COMPATIBILITY_FIELDS
_xsltStyleItemDocument
_xsltStylesheet
xsltGetProfileInformation
xsltInitAllDocKeys
xsltLoadStylesheetPI
needed
_xsltEffectiveNs
_xsltStackElem
xsltApplyOneTemplate
xsltCompileAttr
xsltEvalTemplateString
xsltFindTemplate
xsltParseStylesheetImportedDoc
xsltRegisterExtPrefix
xsltXPathFunctionLookup
xsltXPathGetTransformContext
xsltXPathVariableLookup
needs
xsltApplyOneTemplate
xsltEvalUserParams
xsltGetTemplate
negative
xsltCalibrateAdjust
xsltFormatNumberConversion
nested
_xsltStylesheet
newer
xsltExtensionInstructionResultFinalize
xsltExtensionInstructionResultRegister
newly
xsltCopyTextString
xsltExtensionInstructionResultRegister
xsltNewStylesheet
xsltNewTransformContext
next
XSLT_ITEM_COMPATIBILITY_FIELDS
_xsltEffectiveNs
_xsltElemPreComp
_xsltNsAlias
_xsltNsList
_xsltNsMap
_xsltVarInfo
xsltGetTemplate
xsltNextImport
node-set
xsltDocumentFunction
xsltFunctionNodeSet
xsltKeyFunction
xsltSortFunc
node-set?
xsltDocumentFunction
xsltGenerateIdFunction
node-trees
xsltFreeStyleDocuments
nodes
_xsltTransformContext
xsltApplyOneTemplate
xsltAttrListTemplateProcess
xsltComputeSortResult
xsltDefaultSortFunction
xsltDoSortFunction
xsltParseTemplateContent
xsltSort
nodeset
xsltComputeSortResult
xsltGetKey
non
xsltAttrListTemplateProcess
non-NULL
xsltApplyOneTemplate
xsltCopyNamespaceList
xsltGetTemplate
non-excluded
_xsltTemplate
non-wellformed
xsltApplyStylesheet
xsltRunStylesheet
xsltRunStylesheetUser
none
xsltGetDefaultSecurityPrefs
xsltGetNamespace
xsltGetSpecialNamespace
nor
xsltSetGenericErrorFunc
normal
xsltExtensionInstructionResultFinalize
normalize
xsltNormalizeCompSteps
normally
xsltEvalOneUserParam
xsltQuoteOneUserParam
nothing
xsltApplyAttributeSet
now
XML_CAST_FPTR
XSLT_REFACTORED_KEYCOMP
nowhere
_xsltStyleItemDocument
ns-decl
_xsltNsMap
ns-declaration
xsltGetNamespace
xsltGetSpecialNamespace
ns-declarations
xsltCopyNamespaceList
ns-name
xsltGetNamespace
xsltGetSpecialNamespace
ns-prefix
xsltGetNamespace
xsltGetSpecialNamespace
ns-prefixes
xsltGetSpecialNamespace
null
xsltEvalOneUserParam
xsltQuoteOneUserParam

Letter o:

object
XML_CAST_FPTR
xsltDocumentFunction
xsltExtensionInstructionResultRegister
xsltFlagRVTs
xsltKeyFunction
xsltSystemPropertyFunction
xsltXPathCompile
xsltXPathCompileFlags
obsolete
xsltApplyOneTemplate
xsltDocumentSortFunction
obtained
xsltSaveResultTo
xsltSaveResultToFd
xsltSaveResultToFile
xsltSaveResultToFilename
xsltSaveResultToString
occcur
xslHandleDebugger
occurences
_xsltFormatNumberInfo
off
_xsltCompilerCtxt
xslDropCall
xsltGetCNsProp
xsltGetNsProp
often
_xsltTemplate
old
_xsltCompilerCtxt
xsltGetQNameURI
xsltRegisterExtPrefix
on-demand
XSLT_REFACTORED_KEYCOMP
once
xsltLoadStylesheetPI
one
xsltAttrTemplateProcess
xsltCheckExtPrefix
xsltCheckExtURI
xsltExtensionInstructionResultRegister
xsltGetTemplate
xsltGetUTF8Char
xsltNextImport
xsltNumberFormat
xsltRunStylesheet
xsltRunStylesheetUser
xsltTestCompMatchList
one:
IS_XSLT_REAL_NODE
ones
xsltCleanupTemplates
only
XSLT_REFACTORED_KEYCOMP
_xsltCompilerCtxt
xsltCheckExtPrefix
xsltCheckExtURI
xsltCopyNamespaceList
xsltEvalGlobalVariables
xsltExtElementLookup
xsltGetSpecialNamespace
xsltRegisterTmpRVT
xsltRunStylesheet
xsltRunStylesheetUser
onto
xsltAddStackElemList
xsltLocalVariablePush
opaque
xsltNewLocale
open
xsltSaveResultToFd
xsltSaveResultToFile
operation
xsltSecurityAllow
xsltSecurityForbid
optimization
XSLT_REFACTORED_XPATHCOMP
_xsltTransformContext
option
xsltGetSecurityPrefs
xsltSetCtxtParseOptions
xsltSetSecurityPrefs
optional
xsltRegisterExtPrefix
options
XSLT_PARSE_OPTIONS
xsltCheckRead
xsltCheckWrite
xsltDocLoaderFunc
xsltSetCtxtParseOptions
order
XSLT_GET_IMPORT_INT
XSLT_GET_IMPORT_PTR
_xsltCompilerCtxt
xsltDocumentSortFunction
xsltExtensionInstructionResultRegister
ordered
_xsltStylesheet
xsltComputeSortResult
original
_xsltNsMap
xsltGetUTF8Char
other
xsltFormatNumberConversion
otherwise
xslAddCall
xsltAddTemplate
xsltCheckExtPrefix
xsltCheckExtURI
xsltEvalXPathPredicate
xsltExtModuleElementLookup
xsltExtModuleElementPreComputeLookup
xsltExtModuleFunctionLookup
xsltExtModuleTopLevelLookup
xsltGetSecurityPrefs
xsltGetXIncludeDefault
xsltIsBlank
xsltSetCtxtSecurityPrefs
xsltSetSecurityPrefs
ouput
xsltFormatNumberConversion
out
XSLT_RVT_VARIABLE
xsltSetGenericDebugFunc
xsltSetGenericErrorFunc
xsltSetTransformErrorFunc
output
_xsltStylesheet
_xsltTransformContext
xsltApplyStylesheet
xsltApplyStylesheetUser
xsltDebugDumpExtensions
xsltGetNamespace
xsltParseStylesheetOutput
xsltProfileStylesheet
xsltRunStylesheet
xsltRunStylesheetUser
xsltSaveResultTo
outside
xsltAttrTemplateValueProcessNode
over
xsltAttrListTemplateProcess
xsltAttrTemplateProcess
overhead
xsltRegisterTmpRVT
own
xsltApplyStylesheetUser
ownership
xsltFlagRVTs
owning
_xsltCompilerNodeInfo

A-I J-R S-a b-c d-e f-g h-i j-m n-o p-p q-s t-u v-x y-z

Daniel Veillard

PK|0]xDAPIsymbols.htmlnu[ Alphabetic List of Symbols in libxslt
Action against software patentsGNOME2 LogoW3C logoRed Hat Logo
Made with Libxslt Logo

The XSLT C library for GNOME

Alphabetic List of Symbols in libxslt

Main Menu
Related links
API Indexes

Letter C:

CHECK_STOPPED
CHECK_STOPPED0
CHECK_STOPPEDE

Letter I:

IS_XSLT_ATTR_FAST
IS_XSLT_ELEM
IS_XSLT_ELEM_FAST
IS_XSLT_NAME
IS_XSLT_REAL_NODE

Letter L:

LIBXSLT_PUBLIC

Letter N:

NODE_IS_KEYED

Letter U:

UNDEFINED_DEFAULT_NS

Letter X:

XML_CAST_FPTR
XSLTCALL
XSLTPUBFUN
XSLTPUBVAR
XSLT_CCTXT
XSLT_DEBUG_CONT
XSLT_DEBUG_INIT
XSLT_DEBUG_NEXT
XSLT_DEBUG_NONE
XSLT_DEBUG_QUIT
XSLT_DEBUG_RUN
XSLT_DEBUG_RUN_RESTART
XSLT_DEBUG_STEP
XSLT_DEBUG_STEPOUT
XSLT_DEBUG_STOP
XSLT_DEFAULT_URL
XSLT_DEFAULT_VENDOR
XSLT_DEFAULT_VERSION
XSLT_ERROR_SEVERITY_ERROR
XSLT_ERROR_SEVERITY_WARNING
XSLT_FAST_IF
XSLT_FUNC_APPLYIMPORTS
XSLT_FUNC_APPLYTEMPLATES
XSLT_FUNC_ATTRIBUTE
XSLT_FUNC_ATTRSET
XSLT_FUNC_CALLTEMPLATE
XSLT_FUNC_CHOOSE
XSLT_FUNC_COMMENT
XSLT_FUNC_COPY
XSLT_FUNC_COPYOF
XSLT_FUNC_DOCUMENT
XSLT_FUNC_ELEMENT
XSLT_FUNC_EXTENSION
XSLT_FUNC_FALLBACK
XSLT_FUNC_FOREACH
XSLT_FUNC_IF
XSLT_FUNC_INCLUDE
XSLT_FUNC_LITERAL_RESULT_ELEMENT
XSLT_FUNC_MESSAGE
XSLT_FUNC_NUMBER
XSLT_FUNC_OTHERWISE
XSLT_FUNC_PARAM
XSLT_FUNC_PI
XSLT_FUNC_SORT
XSLT_FUNC_TEXT
XSLT_FUNC_UNKOWN_FORWARDS_COMPAT
XSLT_FUNC_VALUEOF
XSLT_FUNC_VARIABLE
XSLT_FUNC_WHEN
XSLT_FUNC_WITHPARAM
XSLT_GET_IMPORT_INT
XSLT_GET_IMPORT_PTR
XSLT_GET_INTERNAL_NSMAP
XSLT_HAS_INTERNAL_NSMAP
XSLT_IS_RES_TREE_FRAG
XSLT_IS_TEXT_NODE
XSLT_ITEM_COMMON_FIELDS
XSLT_ITEM_COMPATIBILITY_FIELDS
XSLT_ITEM_NAVIGATION_FIELDS
XSLT_ITEM_NSINSCOPE_FIELDS
XSLT_LIBXSLT_NAMESPACE
XSLT_LOAD_DOCUMENT
XSLT_LOAD_START
XSLT_LOAD_STYLESHEET
XSLT_LOCALE_NONE
XSLT_LOCALE_POSIX
XSLT_LOCALE_WINAPI
XSLT_MARK_RES_TREE_FRAG
XSLT_MAX_SORT
XSLT_NAMESPACE
XSLT_OUTPUT_HTML
XSLT_OUTPUT_TEXT
XSLT_OUTPUT_XML
XSLT_PARSE_OPTIONS
XSLT_PAT_NO_PRIORITY
XSLT_REFACTORED_KEYCOMP
XSLT_REFACTORED_VARS
XSLT_REFACTORED_XPATHCOMP
XSLT_REGISTER_FUNCTION_LOOKUP
XSLT_REGISTER_VARIABLE_LOOKUP
XSLT_RUNTIME_EXTRA
XSLT_RUNTIME_EXTRA_FREE
XSLT_RUNTIME_EXTRA_LST
XSLT_RVT_FUNC_RESULT
XSLT_RVT_GLOBAL
XSLT_RVT_LOCAL
XSLT_RVT_VARIABLE
XSLT_SAXON_NAMESPACE
XSLT_SECPREF_CREATE_DIRECTORY
XSLT_SECPREF_READ_FILE
XSLT_SECPREF_READ_NETWORK
XSLT_SECPREF_WRITE_FILE
XSLT_SECPREF_WRITE_NETWORK
XSLT_STATE_ERROR
XSLT_STATE_OK
XSLT_STATE_STOPPED
XSLT_STRANGE
XSLT_TIMESTAMP_TICS_PER_SEC
XSLT_TODO
XSLT_TRACE
XSLT_TRACE_ALL
XSLT_TRACE_APPLY_TEMPLATE
XSLT_TRACE_APPLY_TEMPLATES
XSLT_TRACE_CALL_TEMPLATE
XSLT_TRACE_CHOOSE
XSLT_TRACE_COMMENT
XSLT_TRACE_COPY
XSLT_TRACE_COPY_OF
XSLT_TRACE_COPY_TEXT
XSLT_TRACE_FOR_EACH
XSLT_TRACE_IF
XSLT_TRACE_KEYS
XSLT_TRACE_NONE
XSLT_TRACE_PI
XSLT_TRACE_PROCESS_NODE
XSLT_TRACE_STRIP_SPACES
XSLT_TRACE_TEMPLATES
XSLT_TRACE_VALUE_OF
XSLT_TRACE_VARIABLES
XSLT_XALAN_NAMESPACE
XSLT_XT_NAMESPACE

Letter _:

_REENTRANT
_xsltCompMatch
_xsltCompilerCtxt
_xsltCompilerNodeInfo
_xsltDecimalFormat
_xsltDocument
_xsltEffectiveNs
_xsltElemPreComp
_xsltFormatNumberInfo
_xsltKeyDef
_xsltKeyTable
_xsltNsAlias
_xsltNsList
_xsltNsListContainer
_xsltNsMap
_xsltNumberData
_xsltPointerList
_xsltPrincipalStylesheetData
_xsltRuntimeExtra
_xsltStackElem
_xsltStyleBasicEmptyItem
_xsltStyleBasicExpressionItem
_xsltStyleBasicItemVariable
_xsltStyleItemApplyTemplates
_xsltStyleItemAttribute
_xsltStyleItemCallTemplate
_xsltStyleItemCopy
_xsltStyleItemDocument
_xsltStyleItemElement
_xsltStyleItemExtElement
_xsltStyleItemIf
_xsltStyleItemInclude
_xsltStyleItemLRElementInfo
_xsltStyleItemMessage
_xsltStyleItemNumber
_xsltStyleItemOtherwise
_xsltStyleItemPI
_xsltStyleItemParam
_xsltStyleItemSort
_xsltStyleItemText
_xsltStyleItemUknown
_xsltStyleItemValueOf
_xsltStyleItemWhen
_xsltStylePreComp
_xsltStylesheet
_xsltTemplate
_xsltTransformCache
_xsltTransformContext
_xsltVarInfo

Letter x:

xslAddCall
xslDebugStatus
xslDropCall
xslHandleDebugger
xsltAddCallCallback
xsltAddKey
xsltAddStackElemList
xsltAddTemplate
xsltAllocateExtra
xsltAllocateExtraCtxt
xsltApplyAttributeSet
xsltApplyImports
xsltApplyOneTemplate
xsltApplyStripSpaces
xsltApplyStylesheet
xsltApplyStylesheetUser
xsltApplyTemplates
xsltAttrListTemplateProcess
xsltAttrTemplateProcess
xsltAttrTemplateValueProcess
xsltAttrTemplateValueProcessNode
xsltAttribute
xsltCalibrateAdjust
xsltCallTemplate
xsltCheckExtPrefix
xsltCheckExtURI
xsltCheckRead
xsltCheckWrite
xsltChoose
xsltCleanupGlobals
xsltCleanupTemplates
xsltComment
xsltCompMatch
xsltCompMatchPtr
xsltCompileAttr
xsltCompilePattern
xsltCompilerCtxt
xsltCompilerCtxtPtr
xsltCompilerNodeInfo
xsltCompilerNodeInfoPtr
xsltComputeSortResult
xsltConstNamespaceNameXSLT
xsltCopy
xsltCopyNamespace
xsltCopyNamespaceList
xsltCopyOf
xsltCopyTextString
xsltCreateRVT
xsltDebug
xsltDebugDumpExtensions
xsltDebugGetDefaultTrace
xsltDebugSetDefaultTrace
xsltDebugStatusCodes
xsltDebugTraceCodes
xsltDecimalFormat
xsltDecimalFormatGetByName
xsltDecimalFormatGetByQName
xsltDecimalFormatPtr
xsltDefaultSortFunction
xsltDoSortFunction
xsltDocDefaultLoader
xsltDocLoaderFunc
xsltDocument
xsltDocumentComp
xsltDocumentElem
xsltDocumentFunction
xsltDocumentPtr
xsltDocumentSortFunction
xsltDropCallCallback
xsltEffectiveNs
xsltEffectiveNsPtr
xsltElemPreComp
xsltElemPreCompDeallocator
xsltElemPreCompPtr
xsltElement
xsltElementAvailableFunction
xsltEngineVersion
xsltErrorSeverityType
xsltEvalAVT
xsltEvalAttrValueTemplate
xsltEvalGlobalVariables
xsltEvalOneUserParam
xsltEvalStaticAttrValueTemplate
xsltEvalTemplateString
xsltEvalUserParams
xsltEvalXPathPredicate
xsltEvalXPathString
xsltEvalXPathStringNs
xsltExtElementLookup
xsltExtInitFunction
xsltExtMarker
xsltExtModuleElementLookup
xsltExtModuleElementPreComputeLookup
xsltExtModuleFunctionLookup
xsltExtModuleTopLevelLookup
xsltExtShutdownFunction
xsltExtensionInstructionResultFinalize
xsltExtensionInstructionResultRegister
xsltFindDocument
xsltFindElemSpaceHandling
xsltFindTemplate
xsltFlagRVTs
xsltForEach
xsltFormatNumberConversion
xsltFormatNumberFunction
xsltFormatNumberInfo
xsltFormatNumberInfoPtr
xsltFreeAVTList
xsltFreeAttributeSetsHashes
xsltFreeCompMatchList
xsltFreeCtxtExts
xsltFreeDocumentKeys
xsltFreeDocuments
xsltFreeExts
xsltFreeGlobalVariables
xsltFreeKeys
xsltFreeLocale
xsltFreeLocales
xsltFreeNamespaceAliasHashes
xsltFreeRVTs
xsltFreeSecurityPrefs
xsltFreeStackElemList
xsltFreeStyleDocuments
xsltFreeStylePreComps
xsltFreeStylesheet
xsltFreeTemplateHashes
xsltFreeTransformContext
xsltFunctionAvailableFunction
xsltFunctionNodeSet
xsltGenerateIdFunction
xsltGenericDebug
xsltGenericDebugContext
xsltGenericError
xsltGenericErrorContext
xsltGetCNsProp
xsltGetDebuggerStatus
xsltGetDefaultSecurityPrefs
xsltGetExtData
xsltGetExtInfo
xsltGetKey
xsltGetNamespace
xsltGetNsProp
xsltGetPlainNamespace
xsltGetProfileInformation
xsltGetQNameURI
xsltGetQNameURI2
xsltGetSecurityPrefs
xsltGetSpecialNamespace
xsltGetTemplate
xsltGetUTF8Char
xsltGetXIncludeDefault
xsltHandleDebuggerCallback
xsltIf
xsltInit
xsltInitAllDocKeys
xsltInitCtxtExts
xsltInitCtxtKey
xsltInitCtxtKeys
xsltInitElemPreComp
xsltInitGlobals
xsltIsBlank
xsltKeyDef
xsltKeyDefPtr
xsltKeyFunction
xsltKeyTable
xsltKeyTablePtr
xsltLibxmlVersion
xsltLibxsltVersion
xsltLoadDocument
xsltLoadStyleDocument
xsltLoadStylesheetPI
xsltLoadType
xsltLocalVariablePop
xsltLocalVariablePush
xsltLocale
xsltLocaleChar
xsltLocaleStrcmp
xsltMatchPattern
xsltMaxDepth
xsltMaxVars
xsltMessage
xsltNamespaceAlias
xsltNeedElemSpaceHandling
xsltNewDocument
xsltNewElemPreComp
xsltNewLocale
xsltNewSecurityPrefs
xsltNewStyleDocument
xsltNewStylesheet
xsltNewTransformContext
xsltNextImport
xsltNormalizeCompSteps
xsltNsAlias
xsltNsAliasPtr
xsltNsList
xsltNsListContainer
xsltNsListContainerPtr
xsltNsListPtr
xsltNsMap
xsltNsMapPtr
xsltNumber
xsltNumberData
xsltNumberDataPtr
xsltNumberFormat
xsltOutputType
xsltParseAnyXSLTElem
xsltParseGlobalParam
xsltParseGlobalVariable
xsltParseSequenceConstructor
xsltParseStylesheetAttributeSet
xsltParseStylesheetCallerParam
xsltParseStylesheetDoc
xsltParseStylesheetFile
xsltParseStylesheetImport
xsltParseStylesheetImportedDoc
xsltParseStylesheetInclude
xsltParseStylesheetOutput
xsltParseStylesheetParam
xsltParseStylesheetProcess
xsltParseStylesheetVariable
xsltParseTemplateContent
xsltPointerList
xsltPointerListAddSize
xsltPointerListClear
xsltPointerListCreate
xsltPointerListFree
xsltPointerListPtr
xsltPreComputeExtModuleElement
xsltPreComputeFunction
xsltPrincipalStylesheetData
xsltPrincipalStylesheetDataPtr
xsltPrintErrorContext
xsltProcessOneNode
xsltProcessingInstruction
xsltProfileStylesheet
xsltQuoteOneUserParam
xsltQuoteUserParams
xsltRegisterAllElement
xsltRegisterAllExtras
xsltRegisterAllFunctions
xsltRegisterExtElement
xsltRegisterExtFunction
xsltRegisterExtModule
xsltRegisterExtModuleElement
xsltRegisterExtModuleFull
xsltRegisterExtModuleFunction
xsltRegisterExtModuleTopLevel
xsltRegisterExtPrefix
xsltRegisterExtras
xsltRegisterLocalRVT
xsltRegisterPersistRVT
xsltRegisterTestModule
xsltRegisterTmpRVT
xsltReleaseRVT
xsltResolveStylesheetAttributeSet
xsltRestoreDocumentNamespaces
xsltRunStylesheet
xsltRunStylesheetUser
xsltRuntimeExtra
xsltRuntimeExtraPtr
xsltSaveProfiling
xsltSaveResultTo
xsltSaveResultToFd
xsltSaveResultToFile
xsltSaveResultToFilename
xsltSaveResultToString
xsltSecurityAllow
xsltSecurityCheck
xsltSecurityForbid
xsltSecurityOption
xsltSecurityPrefs
xsltSecurityPrefsPtr
xsltSetCtxtParseOptions
xsltSetCtxtSecurityPrefs
xsltSetCtxtSortFunc
xsltSetDebuggerCallbacks
xsltSetDebuggerStatus
xsltSetDefaultSecurityPrefs
xsltSetGenericDebugFunc
xsltSetGenericErrorFunc
xsltSetLoaderFunc
xsltSetSecurityPrefs
xsltSetSortFunc
xsltSetTransformErrorFunc
xsltSetXIncludeDefault
xsltShutdownCtxtExts
xsltShutdownExts
xsltSort
xsltSortFunc
xsltSplitQName
xsltStackElem
xsltStackElemPtr
xsltStrxfrm
xsltStyleBasicEmptyItem
xsltStyleBasicEmptyItemPtr
xsltStyleBasicExpressionItem
xsltStyleBasicExpressionItemPtr
xsltStyleBasicItemVariable
xsltStyleBasicItemVariablePtr
xsltStyleExtInitFunction
xsltStyleExtShutdownFunction
xsltStyleGetExtData
xsltStyleItemApplyImports
xsltStyleItemApplyImportsPtr
xsltStyleItemApplyTemplates
xsltStyleItemApplyTemplatesPtr
xsltStyleItemAttribute
xsltStyleItemAttributePtr
xsltStyleItemCallTemplate
xsltStyleItemCallTemplatePtr
xsltStyleItemChoose
xsltStyleItemChoosePtr
xsltStyleItemComment
xsltStyleItemCommentPtr
xsltStyleItemCopy
xsltStyleItemCopyOf
xsltStyleItemCopyOfPtr
xsltStyleItemCopyPtr
xsltStyleItemDocument
xsltStyleItemDocumentPtr
xsltStyleItemElement
xsltStyleItemElementPtr
xsltStyleItemExtElement
xsltStyleItemExtElementPtr
xsltStyleItemFallback
xsltStyleItemFallbackPtr
xsltStyleItemForEach
xsltStyleItemForEachPtr
xsltStyleItemIf
xsltStyleItemIfPtr
xsltStyleItemInclude
xsltStyleItemIncludePtr
xsltStyleItemLRElementInfo
xsltStyleItemLRElementInfoPtr
xsltStyleItemMessage
xsltStyleItemMessagePtr
xsltStyleItemNumber
xsltStyleItemNumberPtr
xsltStyleItemOtherwise
xsltStyleItemOtherwisePtr
xsltStyleItemPI
xsltStyleItemPIPtr
xsltStyleItemParam
xsltStyleItemParamPtr
xsltStyleItemSort
xsltStyleItemSortPtr
xsltStyleItemText
xsltStyleItemTextPtr
xsltStyleItemUknown
xsltStyleItemUknownPtr
xsltStyleItemValueOf
xsltStyleItemValueOfPtr
xsltStyleItemVariable
xsltStyleItemVariablePtr
xsltStyleItemWhen
xsltStyleItemWhenPtr
xsltStyleItemWithParam
xsltStyleItemWithParamPtr
xsltStylePreComp
xsltStylePreCompPtr
xsltStylePreCompute
xsltStyleStylesheetLevelGetExtData
xsltStyleType
xsltStylesheet
xsltStylesheetPtr
xsltSystemPropertyFunction
xsltTemplate
xsltTemplateProcess
xsltTemplatePtr
xsltTestCompMatchList
xsltText
xsltTimestamp
xsltTopLevelFunction
xsltTransformCache
xsltTransformCachePtr
xsltTransformContext
xsltTransformContextPtr
xsltTransformError
xsltTransformFunction
xsltTransformState
xsltUninit
xsltUnparsedEntityURIFunction
xsltUnregisterExtModule
xsltUnregisterExtModuleElement
xsltUnregisterExtModuleFunction
xsltUnregisterExtModuleTopLevel
xsltValueOf
xsltVarInfo
xsltVarInfoPtr
xsltVariableLookup
xsltXPathCompile
xsltXPathCompileFlags
xsltXPathFunctionLookup
xsltXPathGetTransformContext
xsltXPathVariableLookup
xsltXSLTAttrMarker

Daniel Veillard

PK|0]%d>d> python.htmlnu[ Python and bindings
Action against software patentsGNOME2 LogoW3C logoRed Hat Logo
Made with Libxslt Logo

The XSLT C library for GNOME

Python and bindings

Main Menu
Related links
API Indexes

There is a number of language bindings and wrappers available for libxml2, the list below is not exhaustive. Please contact the xml-bindings@gnome.org (archives) in order to get updates to this list or to discuss the specific topic of libxml2 or libxslt wrappers or bindings:

The libxslt Python module depends on the libxml2 Python module.

The distribution includes a set of Python bindings, which are guaranteed to be maintained as part of the library in the future, though the Python interface have not yet reached the completeness of the C API.

Stphane Bidoul maintains a Windows port of the Python bindings.

Note to people interested in building bindings, the API is formalized as an XML API description file which allows to automate a large part of the Python bindings, this includes function descriptions, enums, structures, typedefs, etc... The Python script used to build the bindings is python/generator.py in the source distribution.

To install the Python bindings there are 2 options:

  • If you use an RPM based distribution, simply install the libxml2-python RPM and the libxslt-python RPM.
  • Otherwise use the libxml2-python module distribution corresponding to your installed version of libxml2 and libxslt. Note that to install it you will need both libxml2 and libxslt installed and run "python setup.py build install" in the module tree.

The distribution includes a set of examples and regression tests for the python bindings in the python/tests directory. Here are some excepts from those tests:

basic.py:

This is a basic test of XSLT interfaces: loading a stylesheet and a document, transforming the document and saving the result.

import libxml2
import libxslt

styledoc = libxml2.parseFile("test.xsl")
style = libxslt.parseStylesheetDoc(styledoc)
doc = libxml2.parseFile("test.xml")
result = style.applyStylesheet(doc, None)
style.saveResultToFilename("foo", result, 0)
style.freeStylesheet()
doc.freeDoc()
result.freeDoc()

The Python module is called libxslt, you will also need the libxml2 module for the operations on XML trees. Let's have a look at the objects manipulated in that example and how is the processing done:

  • styledoc : is a libxml2 document tree. It is obtained by parsing the XML file "test.xsl" containing the stylesheet.
  • style : this is a precompiled stylesheet ready to be used by the following transformations (note the plural form, multiple transformations can resuse the same stylesheet).
  • doc : this is the document to apply the transformation to. In this case it is simply generated by parsing it from a file but any other processing is possible as long as one get a libxml2 Doc. Note that HTML tree are suitable for XSLT processing in libxslt. This is actually how this page is generated !
  • result : this is a document generated by applying the stylesheet to the document. Note that some of the stylesheet information may be related to the serialization of that document and as in this example a specific saveResultToFilename() method of the stylesheet should be used to save it to a file (in that case to "foo").

Also note the need to explicitely deallocate documents with freeDoc() except for the stylesheet document which is freed when its compiled form is garbage collected.

extfunc.py:

This one is a far more complex test. It shows how to modify the behaviour of an XSLT transformation by passing parameters and how to extend the XSLT engine with functions defined in python:

import libxml2
import libxslt
import string

nodeName = None
def f(ctx, str):
    global nodeName

    #
    # Small check to verify the context is correcly accessed
    #
    try:
        pctxt = libxslt.xpathParserContext(_obj=ctx)
        ctxt = pctxt.context()
        tctxt = ctxt.transformContext()
        nodeName = tctxt.insertNode().name
    except:
        pass

    return string.upper(str)

libxslt.registerExtModuleFunction("foo", "http://example.com/foo", f)

This code defines and register an extension function. Note that the function can be bound to any name (foo) and how the binding is also associated to a namespace name "http://example.com/foo". From an XSLT point of view the function just returns an upper case version of the string passed as a parameter. But the first part of the function also read some contextual information from the current XSLT processing environement, in that case it looks for the current insertion node in the resulting output (either the resulting document or the Result Value Tree being generated), and saves it to a global variable for checking that the access actually worked.

For more information on the xpathParserContext and transformContext objects check the libray internals description. The pctxt is actually an object from a class derived from the libxml2.xpathParserContext() with just a couple more properties including the possibility to look up the XSLT transformation context from the XPath context.

styledoc = libxml2.parseDoc("""
<xsl:stylesheet version='1.0'
  xmlns:xsl='http://www.w3.org/1999/XSL/Transform'
  xmlns:foo='http://example.com/foo'
  xsl:exclude-result-prefixes='foo'>

  <xsl:param name='bar'>failure</xsl:param>
  <xsl:template match='/'>
    <article><xsl:value-of select='foo:foo($bar)'/></article>
  </xsl:template>
</xsl:stylesheet>
""")

Here is a simple example of how to read an XML document from a python string with libxml2. Note how this stylesheet:

  • Uses a global parameter bar
  • Reference the extension function f
  • how the Namespace name "http://example.com/foo" has to be bound to a prefix
  • how that prefix is excluded from the output
  • how the function is called from the select
style = libxslt.parseStylesheetDoc(styledoc)
doc = libxml2.parseDoc("<doc/>")
result = style.applyStylesheet(doc, { "bar": "'success'" })
style.freeStylesheet()
doc.freeDoc()

that part is identical, to the basic example except that the transformation is passed a dictionary of parameters. Note that the string passed "success" had to be quoted, otherwise it is interpreted as an XPath query for the childs of root named "success".

root = result.children
if root.name != "article":
    print "Unexpected root node name"
    sys.exit(1)
if root.content != "SUCCESS":
    print "Unexpected root node content, extension function failed"
    sys.exit(1)
if nodeName != 'article':
    print "The function callback failed to access its context"
    sys.exit(1)

result.freeDoc()

That part just verifies that the transformation worked, that the parameter got properly passed to the engine, that the function f() got called and that it properly accessed the context to find the name of the insertion node.

pyxsltproc.py:

this module is a bit too long to be described there but it is basically a rewrite of the xsltproc command line interface of libxslt in Python. It provides nearly all the functionalities of xsltproc and can be used as a base module to write Python customized XSLT processors. One of the thing to notice are:

libxml2.lineNumbersDefault(1)
libxml2.substituteEntitiesDefault(1)

those two calls in the main() function are needed to force the libxml2 processor to generate DOM trees compliant with the XPath data model.

Daniel Veillard

PK|0]?S))tutorial/libxslttutorial.xmlnu[ ]>
libxslt Tutorial 2001 John Fleck Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.1 or any later version published by the Free Software Foundation with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license can be found here. John Fleck This is version 0.4 of the libxslt Tutorial A tutorial on building a simple application using the libxslt library to perform XSLT transformations to convert an XML file into HTML. Introduction The Extensible Markup Language (XML) is a World Wide Web Consortium standard for the exchange of structured data in text form. Its popularity stems from its universality. Any computer can read a text file. With the proper tools, any computer can read any other computer's XML files. One of the most important of those tools is XSLT: Extensible Stylesheet Language Transformations. XSLT is a declarative language that allows you to translate your XML into arbitrary text output using a stylesheet. libxslt provides the functions to perform the transformation. libxslt is a free C language library written by Daniel Veillard for the GNOME project allowing you to write programs that perform XSLT transformations. While libxslt was written under the auspices of the GNOME project, it does not depend on any GNOME libraries. None are used in the example in this tutorial. This tutorial illustrates a simple program that reads an XML file, applies a stylesheet and saves the resulting output. This is not a program you would want to create yourself. xsltproc, which is included with the libxslt package, does the same thing and is more robust and full-featured. The program written for this tutorial is a stripped-down version of xsltproc designed to illustrate the functionality of libxslt. The full code for xsltproc is in xsltproc.c in the libxslt distribution. It also is available on the web. References: W3C XML page W3C XSL page. libxslt Primary Functions To transform an XML file, you must perform three functions: parse the input file parse the stylesheet apply the stylesheet Preparing to Parse Before you can begin parsing input files or stylesheets, there are several steps you need to take to set up entity handling. These steps are not unique to libxslt. Any libxml2 program that parses XML files would need to take similar steps. First, you need set up some libxml housekeeping. Pass the integer value 1 to the xmlSubstituteEntitiesDefault function, which tells the libxml2 parser to substitute entities as it parses your file. (Passing 0 causes libxml2 to not perform entity substitution.) Second, set xmlLoadExtDtdDefaultValue equal to 1. This tells libxml to load external entity subsets. If you do not do this and your input file includes entities through external subsets, you will get errors. Parse the Stylesheet Parsing the stylesheet takes a single function call, which takes a variable of type xmlChar: cur = xsltParseStylesheetFile((const xmlChar *)argv[i]); In this case, I cast the stylesheet file name, passed in as a command line argument, to xmlChar. The return value is of type xsltStylesheetPtr, a struct in memory that contains the stylesheet tree and other information about the stylesheet. It can be manipulated directly, but for this example you will not need to. Parse the Input File Parsing the input file takes a single function call: doc = xmlParseFile(argv[i]); It returns an xmlDocPtr, a struct in memory that contains the document tree. It can be manipulated directly, but for this example you will not need to. Applying the Stylesheet Now that you have trees representing the document and the stylesheet in memory, apply the stylesheet to the document. The function that does this is xsltApplyStylesheet: res = xsltApplyStylesheet(cur, doc, params); The function takes an xsltStylesheetPtr and an xmlDocPtr, the values returned by the previous two functions. The third variable, params can be used to pass XSLT parameters to the stylesheet. It is a NULL-terminated array of name/value pairs of const char's. Saving the result libxslt includes a family of functions to use in saving the resulting output. For this example, xsltSaveResultToFile is used, and the results are saved to stdout: xsltSaveResultToFile(stdout, res, cur); libxml also contains output functions, such as xmlSaveFile, which can be used here. However, output-related information contained in the stylesheet, such as a declaration of the encoding to be used, will be lost if one of the libxslt save functions is not used. Parameters In XSLT, parameters may be used as a way to pass additional information to a stylesheet. libxslt accepts XSLT parameters as one of the values passed to xsltApplyStylesheet. In the tutorial example and in xsltproc, on which the tutorial example is based, parameters to be passed take the form of key-value pairs. The program collects them from command line arguments, inserting them in the array params, then passes them to the function. The final element in the array is set to NULL. If a parameter being passed is a string rather than an XSLT node, it must be escaped. For the tutorial program, that would be done as follows: tutorial]$ ./libxslt_tutorial --param rootid "'asect1'" stylesheet.xsl filename.xml Cleanup After you are finished, libxslt and libxml provide functions for deallocating memory. xsltFreeStylesheet(cur); xmlFreeDoc(res); xmlFreeDoc(doc); xsltCleanupGlobals(); xmlCleanupParser(); Free the memory used by your stylesheet. Free the memory used by the results document. Free the memory used by your original document. Free memory used by libxslt global variables Free memory used by the XML parser The Code libxslt_tutorial.c &CODE;
PK|0]Bh99tutorial/libxslttutorial.htmlnu[ libxslt Tutorial

libxslt Tutorial

John Fleck

This is version 0.4 of the libxslt Tutorial

Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.1 or any later version published by the Free Software Foundation with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license can be found here.


Abstract

A tutorial on building a simple application using the libxslt library to perform XSLT transformations to convert an XML file into HTML.

Introduction

The Extensible Markup Language (XML) is a World Wide Web Consortium standard for the exchange of structured data in text form. Its popularity stems from its universality. Any computer can read a text file. With the proper tools, any computer can read any other computer's XML files.

One of the most important of those tools is XSLT: Extensible Stylesheet Language Transformations. XSLT is a declarative language that allows you to translate your XML into arbitrary text output using a stylesheet. libxslt provides the functions to perform the transformation.

libxslt is a free C language library written by Daniel Veillard for the GNOME project allowing you to write programs that perform XSLT transformations.

Note

While libxslt was written under the auspices of the GNOME project, it does not depend on any GNOME libraries. None are used in the example in this tutorial.

This tutorial illustrates a simple program that reads an XML file, applies a stylesheet and saves the resulting output. This is not a program you would want to create yourself. xsltproc, which is included with the libxslt package, does the same thing and is more robust and full-featured. The program written for this tutorial is a stripped-down version of xsltproc designed to illustrate the functionality of libxslt.

The full code for xsltproc is in xsltproc.c in the libxslt distribution. It also is available on the web.

References:

Primary Functions

To transform an XML file, you must perform three functions:

  1. parse the input file

  2. parse the stylesheet

  3. apply the stylesheet

Preparing to Parse

Before you can begin parsing input files or stylesheets, there are several steps you need to take to set up entity handling. These steps are not unique to libxslt. Any libxml2 program that parses XML files would need to take similar steps.

First, you need set up some libxml housekeeping. Pass the integer value 1 to the xmlSubstituteEntitiesDefault function, which tells the libxml2 parser to substitute entities as it parses your file. (Passing 0 causes libxml2 to not perform entity substitution.)

Second, set xmlLoadExtDtdDefaultValue equal to 1. This tells libxml to load external entity subsets. If you do not do this and your input file includes entities through external subsets, you will get errors.

Parse the Stylesheet

Parsing the stylesheet takes a single function call, which takes a variable of type xmlChar:

	  cur = xsltParseStylesheetFile((const xmlChar *)argv[i]);
	
In this case, I cast the stylesheet file name, passed in as a command line argument, to xmlChar. The return value is of type xsltStylesheetPtr, a struct in memory that contains the stylesheet tree and other information about the stylesheet. It can be manipulated directly, but for this example you will not need to.

Parse the Input File

Parsing the input file takes a single function call:

doc = xmlParseFile(argv[i]);
	
It returns an xmlDocPtr, a struct in memory that contains the document tree. It can be manipulated directly, but for this example you will not need to.

Applying the Stylesheet

Now that you have trees representing the document and the stylesheet in memory, apply the stylesheet to the document. The function that does this is xsltApplyStylesheet:

res = xsltApplyStylesheet(cur, doc, params);
	
The function takes an xsltStylesheetPtr and an xmlDocPtr, the values returned by the previous two functions. The third variable, params can be used to pass XSLT parameters to the stylesheet. It is a NULL-terminated array of name/value pairs of const char's.

Saving the result

libxslt includes a family of functions to use in saving the resulting output. For this example, xsltSaveResultToFile is used, and the results are saved to stdout:

xsltSaveResultToFile(stdout, res, cur);
	

Note

libxml also contains output functions, such as xmlSaveFile, which can be used here. However, output-related information contained in the stylesheet, such as a declaration of the encoding to be used, will be lost if one of the libxslt save functions is not used.

Parameters

In XSLT, parameters may be used as a way to pass additional information to a stylesheet. libxslt accepts XSLT parameters as one of the values passed to xsltApplyStylesheet.

In the tutorial example and in xsltproc, on which the tutorial example is based, parameters to be passed take the form of key-value pairs. The program collects them from command line arguments, inserting them in the array params, then passes them to the function. The final element in the array is set to NULL.

Note

If a parameter being passed is a string rather than an XSLT node, it must be escaped. For the tutorial program, that would be done as follows: tutorial]$ ./libxslt_tutorial --param rootid "'asect1'" stylesheet.xsl filename.xml

Cleanup

After you are finished, libxslt and libxml provide functions for deallocating memory.

	  xsltFreeStylesheet(cur);1
	  xmlFreeDoc(res);2
	  xmlFreeDoc(doc);3
	  xsltCleanupGlobals();4
	  xmlCleanupParser();5

	  
1

Free the memory used by your stylesheet.

2

Free the memory used by the results document.

3

Free the memory used by your original document.

4

Free memory used by libxslt global variables

5

Free memory used by the XML parser

A. The Code

libxslt_tutorial.c

/*
 * libxslt_tutorial.c: demo program for the XSL Transformation 1.0 engine
 *
 * based on xsltproc.c, by Daniel.Veillard@imag.fr
 * by John Fleck 
 *
 * See the file Copyright for the status of this software.
 *
 */ 

#include <string.h>
#include <libxml/xmlmemory.h>
#include <libxml/debugXML.h>
#include <libxml/HTMLtree.h>
#include <libxml/xmlIO.h>
#include <libxml/DOCBparser.h>
#include <libxml/xinclude.h>
#include <libxml/catalog.h>
#include <libxslt/xslt.h>
#include <libxslt/xsltInternals.h>
#include <libxslt/transform.h>
#include <libxslt/xsltutils.h>



extern int xmlLoadExtDtdDefaultValue;

static void usage(const char *name) {
    printf("Usage: %s [options] stylesheet file [file ...]\n", name);
    printf("      --param name value : pass a (parameter,value) pair\n");

}

int
main(int argc, char **argv) {
	int i;
	const char *params[16 + 1];
	int nbparams = 0;
	xsltStylesheetPtr cur = NULL;
	xmlDocPtr doc, res;

	if (argc <= 1) {
		usage(argv[0]);
		return(1);
	}
	

 for (i = 1; i < argc; i++) {
        if (argv[i][0] != '-')
            break;
	if ((!strcmp(argv[i], "-param")) ||
                   (!strcmp(argv[i], "--param"))) {
		i++;
		params[nbparams++] = argv[i++];
		params[nbparams++] = argv[i];
		if (nbparams >= 16) {
			fprintf(stderr, "too many params\n");
			return (1);
		}
        }  else {
            fprintf(stderr, "Unknown option %s\n", argv[i]);
            usage(argv[0]);
            return (1);
        }
    }

	params[nbparams] = NULL;
	xmlSubstituteEntitiesDefault(1);
	xmlLoadExtDtdDefaultValue = 1;
	cur = xsltParseStylesheetFile((const xmlChar *)argv[i]);
	i++;
	doc = xmlParseFile(argv[i]);
	res = xsltApplyStylesheet(cur, doc, params);
	xsltSaveResultToFile(stdout, res, cur);

	xsltFreeStylesheet(cur);
	xmlFreeDoc(res);
	xmlFreeDoc(doc);

        xsltCleanupGlobals();
        xmlCleanupParser();
	return(0);

}

PK|0]T HHtutorial/libxslt_tutorial.cnu[/* * libxslt_tutorial.c: demo program for the XSL Transformation 1.0 engine * * based on xsltproc.c, by Daniel.Veillard@imag.fr * by John Fleck * * See Copyright for the status of this software. * */ #include #include #include #include #include #include #include #include #include #include #include #include extern int xmlLoadExtDtdDefaultValue; static void usage(const char *name) { printf("Usage: %s [options] stylesheet file [file ...]\n", name); printf(" --param name value : pass a (parameter,value) pair\n"); } int main(int argc, char **argv) { int i; const char *params[16 + 1]; int nbparams = 0; xsltStylesheetPtr cur = NULL; xmlDocPtr doc, res; if (argc <= 1) { usage(argv[0]); return(1); } for (i = 1; i < argc; i++) { if (argv[i][0] != '-') break; if ((!strcmp(argv[i], "-param")) || (!strcmp(argv[i], "--param"))) { i++; params[nbparams++] = argv[i++]; params[nbparams++] = argv[i]; if (nbparams >= 16) { fprintf(stderr, "too many params\n"); return (1); } } else { fprintf(stderr, "Unknown option %s\n", argv[i]); usage(argv[0]); return (1); } } params[nbparams] = NULL; xmlSubstituteEntitiesDefault(1); xmlLoadExtDtdDefaultValue = 1; cur = xsltParseStylesheetFile((const xmlChar *)argv[i]); i++; doc = xmlParseFile(argv[i]); res = xsltApplyStylesheet(cur, doc, params); xsltSaveResultToFile(stdout, res, cur); xsltFreeStylesheet(cur); xmlFreeDoc(res); xmlFreeDoc(doc); xsltCleanupGlobals(); xmlCleanupParser(); return(0); } PK|0]XsWWAPIchunk4.htmlnu[ API Alphabetic Index d-e for libxslt
Action against software patentsGNOME2 LogoW3C logoRed Hat Logo
Made with Libxslt Logo

The XSLT C library for GNOME

API Alphabetic Index d-e for libxslt

Main Menu
Related links
API Indexes

A-I J-R S-a b-c d-e f-g h-i j-m n-o p-p q-s t-u v-x y-z

Letter d:

data
_xsltRuntimeExtra
_xsltStylesheet
_xsltTransformContext
xslHandleDebugger
xsltDocumentComp
xsltExtInitFunction
xsltExtShutdownFunction
xsltExtensionInstructionResultFinalize
xsltFreeCtxtExts
xsltFreeGlobalVariables
xsltGetExtData
xsltInitCtxtExts
xsltInitElemPreComp
xsltNumberFormat
xsltPreComputeExtModuleElement
xsltStyleExtInitFunction
xsltStyleExtShutdownFunction
xsltStyleGetExtData
xsltStyleStylesheetLevelGetExtData
xsltTimestamp
xsltXPathGetTransformContext
deallocated
xsltAttrTemplateValueProcess
xsltAttrTemplateValueProcessNode
xsltEvalAVT
xsltEvalAttrValueTemplate
xsltEvalStaticAttrValueTemplate
xsltEvalXPathString
xsltEvalXPathStringNs
deallocation
_xsltRuntimeExtra
deallocator
_xsltElemPreComp
xsltInitElemPreComp
dealy
xsltCalibrateAdjust
debug
_xsltTransformContext
xsltDebug
xsltDebugGetDefaultTrace
xsltDebugSetDefaultTrace
debugger
xsltSetDebuggerCallbacks
debugging
xslHandleDebugger
debugtrace
XSLT_TRACE
decimal
_xsltFormatNumberInfo
xsltFormatNumberConversion
decimal-format
xsltDecimalFormatGetByName
xsltDecimalFormatGetByQName
declaration
xsltCopyNamespace
xsltGetCNsProp
xsltGetNamespace
xsltGetNsProp
xsltGetPlainNamespace
xsltGetSpecialNamespace
xsltParseGlobalParam
xsltParseGlobalVariable
xsltParseStylesheetParam
declared
xsltCheckExtPrefix
xsltCheckExtURI
xsltCopyNamespace
declaring
xsltGetSpecialNamespace
default
XSLT_DEFAULT_VERSION
_xsltStylesheet
xsltDebugGetDefaultTrace
xsltDebugSetDefaultTrace
xsltFormatNumberConversion
xsltGetCNsProp
xsltGetDefaultSecurityPrefs
xsltGetNsProp
xsltGetSpecialNamespace
xsltGetXIncludeDefault
xsltRegisterAllElement
xsltRegisterAllFunctions
xsltSetCtxtParseOptions
xsltSetDefaultSecurityPrefs
xsltSetLoaderFunc
xsltSetSortFunc
xsltSetXIncludeDefault
define
XML_CAST_FPTR
XSLT_FAST_IF
XSLT_REFACTORED_KEYCOMP
XSLT_REFACTORED_VARS
XSLT_REFACTORED_XPATHCOMP
XSLT_RUNTIME_EXTRA
defined
_xsltTransformContext
xslAddCall
xsltGetQNameURI
definition
xsltAddKey
xsltInitCtxtKey
definitions
_xsltStylesheet
dependent
xsltNewLocale
deprecated
xsltRegisterExtras
depth
_xsltCompilerCtxt
_xsltStackElem
_xsltVarInfo
xsltLocalVariablePop
derived
xsltInitElemPreComp
description
xsltEvalOneUserParam
descriptions
_xsltStylesheet
descriptor
xsltSaveResultToFd
desired
xsltFindDocument
xsltGetExtInfo
destroyed
XSLT_RVT_FUNC_RESULT
XSLT_RVT_LOCAL
XSLT_RVT_VARIABLE
xsltFlagRVTs
details
xsltEvalOneUserParam
detected
XSLT_STRANGE
dict
xsltFindTemplate
dictionary
xsltDocLoaderFunc
xsltGetCNsProp
xsltGetQNameURI2
xsltSplitQName
dictionary:
_xsltStylesheet
_xsltTransformContext
different
XSLT_REGISTER_FUNCTION_LOOKUP
XSLT_REGISTER_VARIABLE_LOOKUP
xsltGetCNsProp
xsltGetNsProp
digit
xsltFormatNumberConversion
directly
xsltSort
directories
xsltCheckWrite
disable-escaping
xsltCopyTextString
disabled
XML_CAST_FPTR
disattached
xsltAttrListTemplateProcess
discard
xsltGetUTF8Char
display
_xsltFormatNumberInfo
xsltTransformError
distinct
_xsltStylesheet
xsltApplyOneTemplate
doc
xsltGetKey
xsltLoadStylesheetPI
xsltParseStylesheetDoc
docs
_xsltTransformContext
xsltFormatNumberConversion
doctype-public
_xsltStylesheet
doctype-system
_xsltStylesheet
documents
_xsltDocument
_xsltStylesheet
_xsltTransformContext
xsltFreeDocuments
xsltParseStylesheetImportedDoc
does
XSLT_ITEM_COMPATIBILITY_FIELDS
xsltApplyOneTemplate
xsltAttrTemplateProcess
xsltEvalStaticAttrValueTemplate
xsltGetCNsProp
xsltGetNsProp
xsltPointerListClear
xsltPointerListFree
xsltSaveResultToFd
xsltSaveResultToFile
doesn
xsltTestCompMatchList
done
_xsltDocument
_xsltStackElem
_xsltStylesheet
xsltCompilePattern
xsltEvalUserParams
xsltFindTemplate
xsltGetKey
xsltInitCtxtKeys
xsltLoadStylesheetPI
xsltQuoteUserParams
down
xsltXPathCompileFlags
dump
xsltProfileStylesheet
dunno
_xsltEffectiveNs
during
_xsltStylesheet
xsltRegisterExtPrefix
xsltSortFunc

Letter e:

eclared
_xsltEffectiveNs
effect
_xsltCompilerCtxt
either
xslHandleDebugger
xsltDocLoaderFunc
xsltFormatNumberConversion
element-available
xsltElementAvailableFunction
elements
_xsltCompilerNodeInfo
_xsltStylesheet
_xsltTransformContext
xsltDebugDumpExtensions
xsltExtElementLookup
xsltFreeCompMatchList
xsltParseSequenceConstructor
xsltRegisterAllElement
xsltTransformFunction
else
xsltGetExtInfo
emitted
XSLT_TRACE
xsltSetGenericDebugFunc
xsltSetGenericErrorFunc
empty
XSLT_ITEM_NAVIGATION_FIELDS
enable
XSLT_FAST_IF
XSLT_REFACTORED_KEYCOMP
XSLT_REFACTORED_VARS
XSLT_REFACTORED_XPATHCOMP
enabled
_xsltCompilerNodeInfo
encoded
xsltGetUTF8Char
encoding
_xsltStylesheet
xsltRunStylesheet
xsltRunStylesheetUser
encountering
XML_CAST_FPTR
end
_xsltElemPreComp
ends
XSLT_RVT_LOCAL
engine
xsltDocLoaderFunc
xsltSetCtxtParseOptions
entity
xsltGetCNsProp
xsltGetNsProp
entry
xsltGetQNameURI2
xsltNormalizeCompSteps
xsltXPathFunctionLookup
xsltXPathVariableLookup
episode
_xsltCompilerCtxt
equal
xsltLocaleStrcmp
error:
CHECK_STOPPEDE
errors
_xsltCompilerCtxt
_xsltStylesheet
xsltApplyOneTemplate
xsltCopyTextString
xsltCreateRVT
xsltExtensionInstructionResultFinalize
xsltGetNamespace
xsltGetPlainNamespace
xsltParseAnyXSLTElem
xsltRegisterLocalRVT
xsltRegisterTmpRVT
establish
xsltCompileAttr
etc
xsltInit
eval
_xsltStackElem
evaluate
xsltEvalXPathPredicate
evaluated
xsltEvalOneUserParam
xsltEvalUserParams
xsltQuoteUserParams
evaluates
xsltAttrListTemplateProcess
xsltParseStylesheetParam
xsltParseStylesheetVariable
evaluation
_xsltStackElem
everything
xsltFindElemSpaceHandling
xsltParseAnyXSLTElem
xsltParseStylesheetProcess
example
xsltDocLoaderFunc
xsltXPathGetTransformContext
except
xsltFormatNumberConversion
xsltParseStylesheetImportedDoc
excluded
_xsltCompilerNodeInfo
_xsltStylesheet
excluded-result-prefixes
_xsltPrincipalStylesheetData
exctract
xsltApplyAttributeSet
executed
xslHandleDebugger
execution
_xsltStylesheet
exension
xsltGetExtData
xsltStyleGetExtData
xsltStyleStylesheetLevelGetExtData
existent
xsltCopyTextString
existing
xsltInitElemPreComp
exists
xsltParseStylesheetImportedDoc
exit
xsltRegisterTmpRVT
exiting
XSLT_RVT_FUNC_RESULT
xsltApplyOneTemplate
exits
_xsltTransformContext
xsltApplyOneTemplate
xsltExtensionInstructionResultFinalize
xsltExtensionInstructionResultRegister
xsltRegisterLocalRVT
xsltRegisterTmpRVT
expect
xsltApplyOneTemplate
expressed
XSLT_PAT_NO_PRIORITY
expression
_xsltStyleBasicExpressionItem
_xsltStyleItemApplyTemplates
_xsltStyleItemIf
_xsltStyleItemSort
_xsltStyleItemValueOf
_xsltStylePreComp
xsltEvalOneUserParam
xsltEvalUserParams
xsltEvalXPathPredicate
xsltEvalXPathString
xsltEvalXPathStringNs
xsltXPathCompile
xsltXPathCompileFlags
expressions
XSLT_REFACTORED_XPATHCOMP
_xsltStylesheet
xsltEvalAttrValueTemplate
xsltEvalStaticAttrValueTemplate
xsltQuoteUserParams
exsl:function
xsltApplyOneTemplate
exslt:function
xsltApplyOneTemplate
exsltFuncFunctionFunction
xsltApplyOneTemplate
xsltParseStylesheetCallerParam
extInfos
xsltGetExtInfo
extended
XSLT_LOCALE_NONE
XSLT_LOCALE_WINAPI
extending
xsltInitElemPreComp
extension-element-prefixes
_xsltPrincipalStylesheetData
extensions
XSLT_LIBXSLT_NAMESPACE
XSLT_LOCALE_POSIX
XSLT_SAXON_NAMESPACE
XSLT_XALAN_NAMESPACE
XSLT_XT_NAMESPACE
xsltCheckExtPrefix
xsltCheckExtURI
xsltFreeExts
xsltInit
xsltInitGlobals
xsltRegisterAllExtras
xsltRegisterExtras
external
xsltLoadStylesheetPI
extra
XSLT_RUNTIME_EXTRA
XSLT_RUNTIME_EXTRA_FREE
XSLT_RUNTIME_EXTRA_LST
_xsltRuntimeExtra
_xsltTransformContext
xsltAllocateExtra
xsltAllocateExtraCtxt
xsltProcessOneNode
xsltTransformError
xsltXPathCompileFlags
extract
xsltGetProfileInformation
xsltLoadStylesheetPI
extras
_xsltTransformContext

A-I J-R S-a b-c d-e f-g h-i j-m n-o p-p q-s t-u v-x y-z

Daniel Veillard

PK|0] smallfootonly.gifnu[GIF89a0< BBDVVT62,ffd&&$쓒~~|nnlJJL¾|zz| bVL>>4""$>:4ĥ vndvlqjdĎ|tԂztb^Xܶ224jb\&"NNL̚tzt*&$wjdjjdJFDzrltƾԖ|bZTFFD:6,/*,VJD^ZT^RL6.,F>4::<&"$$h^\̢tplXNL~rlvl䖊~t ƺVRLNFD~ndrf\j^T:2,nb\^^\䢖̒|>64bZL**,nbT624F><~vt|jjl:64VRTjfdʾ¾!Created with The GIMP,0<[H:0Ç6RD "jHP#zq``Ǔ0:dDqm JHW@($("'M ħOP*Z,VP9z(QaGbFIHjI/@,aF~p$(X0I`9v 1ʠmUI4x`[*d% Ӵ(=a$'CiH3s.-+Ho28Z:e pp܀hBS @.w`<<H Hp#t8 0"'hB@0x ҫpꈈsE$0 v :,?OG8 `Jpdpb(؇&`IAPxA$H9`C?aHAUh*zpG./d8C5{9~ %4PCEMp/@ FԐa:$"Q 5\< j}&`E؀ { @zo/061uST !""qoDB>"h/ @V`UDe@07:A)n^p lP[A Ap@k24o!XFG,b F0  y> i :Xab-b |pQDs!N1j(S,.\ 2| ]-(@޹@hF8a +@[PeHY!)#PCJ@jX B dt!ڜ5%0 3t갂,q0P B EP!qL[ 0&!x< {!P/_G x$pt.Dv6@'@#1"h/hD^` 0  U(9 4IH@;PK|0]_oEAPIchunk13.htmlnu[ API Alphabetic Index y-z for libxslt
Action against software patentsGNOME2 LogoW3C logoRed Hat Logo
Made with Libxslt Logo

The XSLT C library for GNOME

API Alphabetic Index y-z for libxslt

Main Menu
Related links
API Indexes

A-I J-R S-a b-c d-e f-g h-i j-m n-o p-p q-s t-u v-x y-z

Letter y:

yes
_xsltStylesheet
xsltCompileAttr
yet
xsltRunStylesheet
xsltRunStylesheetUser
you
xsltAttrListTemplateProcess
xsltEvalUserParams
your
xsltEvalUserParams

Letter z:

zero
xsltFormatNumberConversion

A-I J-R S-a b-c d-e f-g h-i j-m n-o p-p q-s t-u v-x y-z

Daniel Veillard

PK|0]N[$[$ docbook.htmlnu[ DocBook
Action against software patentsGNOME2 LogoW3C logoRed Hat Logo
Made with Libxslt Logo

The XSLT C library for GNOME

DocBook

Main Menu
Related links
API Indexes

The duck picture

DocBook is an XML/SGML vocabulary particularly well suited to books and papers about computer hardware and software.

xsltproc and libxslt are not specifically dependant on DocBook, but since a lot of people use xsltproc and libxml2 for DocBook formatting, here are a few pointers and information which may be helpful:

Do not use the --docbook option of xsltproc to process XML DocBook documents, this option is only intended to provide some (limited) support of the SGML version of DocBook.

Points which are not DocBook specific but still worth mentionning again:

  • if you think DocBook processing time is too slow, make sure you have XML Catalogs pointing to a local installation of the DTD of DocBook. Check the XML Catalog page to understand more on this subject.
  • before processing a new document, use the command

    xmllint --valid --noout path_to_document

    to make sure that your input is valid DocBook. And fixes the errors before processing further. Note that XSLT processing may work correctly with some forms of validity errors left, but in general it can give troubles on output.

Daniel Veillard

PK|0]q~~FAQ.htmlnu[ FAQ
Action against software patentsGNOME2 LogoW3C logoRed Hat Logo
Made with Libxslt Logo

The XSLT C library for GNOME

FAQ

Main Menu
Related links
API Indexes
  1. Troubles compiling or linking programs using libxslt

    Usually the problem comes from the fact that the compiler doesn't get the right compilation or linking flags. There is a small shell script xslt-config which is installed as part of libxslt usual install process which provides those flags. Use

    xslt-config --cflags

    to get the compilation flags and

    xslt-config --libs

    to get the linker flags. Usually this is done directly from the Makefile as:

    CFLAGS=`xslt-config --cflags`

    LIBS=`xslt-config --libs`

    Note also that if you use the EXSLT extensions from the program then you should prepend -lexslt to the LIBS options

  2. passing parameters on the xsltproc command line doesn't work

    xsltproc --param test alpha foo.xsl foo.xml

    the param does not get passed and ends up as ""

    In a nutshell do a double escaping at the shell prompt:

    xsltproc --param test "'alpha'" foo.xsl foo.xml

    i.e. the string value is surrounded by " and ' then terminated by ' and ". Libxslt interpret the parameter values as XPath expressions, so the string ->alpha<- is intepreted as the node set matching this string. You really want ->'alpha'<- to be passed to the processor. And to allow this you need to escape the quotes at the shell level using ->"'alpha'"<- .

    or use

    xsltproc --stringparam test alpha foo.xsl foo.xml

  3. Is there C++ bindings ?

    Yes for example xmlwrapp , see the related pages about bindings

Daniel Veillard

PK|0]GܡܡAPIchunk3.htmlnu[ API Alphabetic Index b-c for libxslt
Action against software patentsGNOME2 LogoW3C logoRed Hat Logo
Made with Libxslt Logo

The XSLT C library for GNOME

API Alphabetic Index b-c for libxslt

Main Menu
Related links
API Indexes

A-I J-R S-a b-c d-e f-g h-i j-m n-o p-p q-s t-u v-x y-z

Letter b:

bar
XSLT_FAST_IF
based
_xsltStylesheet
xsltNewLocale
basically
xsltCompileAttr
been
xsltGetCNsProp
xsltGetNsProp
before
xsltApplyOneTemplate
xsltEvalUserParams
xsltExtensionInstructionResultRegister
xsltInitCtxtKeys
xsltLocaleStrcmp
xsltQuoteUserParams
beginning
xsltTimestamp
behaviour
_xsltCompilerCtxt
being
_xsltStylesheet
_xsltTransformContext
xslAddCall
xslHandleDebugger
xsltExtensionInstructionResultFinalize
xsltExtensionInstructionResultRegister
xsltGetQNameURI
xsltGetTemplate
xsltPrintErrorContext
xsltRunStylesheet
xsltRunStylesheetUser
xsltSetXIncludeDefault
between
_xsltStylesheet
_xsltTransformContext
xsltResolveStylesheetAttributeSet
bit
NODE_IS_KEYED
blank
xsltParseTemplateContent
blanks
xsltIsBlank
block
xsltFreeSecurityPrefs
xsltGetSecurityPrefs
xsltNewSecurityPrefs
xsltSecurityAllow
xsltSecurityForbid
xsltSetCtxtSecurityPrefs
xsltSetDebuggerCallbacks
xsltSetDefaultSecurityPrefs
xsltSetSecurityPrefs
blocks
XSLT_TODO
_xsltStylesheet
xsltFreeStylePreComps
boolean
xsltElementAvailableFunction
xsltFunctionAvailableFunction
both
xsltApplyAttributeSet
xsltGetSpecialNamespace
xsltLoadStylesheetPI
xsltRunStylesheet
xsltRunStylesheetUser
xsltSplitQName
bound
_xsltStackElem
braces
xsltEvalAttrValueTemplate
xsltEvalStaticAttrValueTemplate
breakpoint
xslHandleDebugger
broke
XML_CAST_FPTR
buffer
xsltRunStylesheet
xsltRunStylesheetUser
xsltSaveResultTo
build
xsltLoadStylesheetPI
building
xsltParseStylesheetDoc
xsltParseStylesheetImportedDoc
built-in
xsltInit
xsltRegisterAllExtras
xsltRegisterExtras
but
XSLT_REFACTORED_KEYCOMP
XSLT_REGISTER_FUNCTION_LOOKUP
XSLT_REGISTER_VARIABLE_LOOKUP
xsltGetCNsProp
xsltGetNsProp
xsltGetQNameURI2
xsltLoadStylesheetPI
xsltParseStylesheetCallerParam
xsltPointerListClear
xsltQuoteUserParams
xsltSort
xsltXPathFunctionLookup
xsltXPathVariableLookup
by:
xsltApplyOneTemplate
xsltAttrTemplateValueProcessNode
xsltCheckExtPrefix
xsltCheckExtURI
xsltCopyNamespaceList
xsltGetNamespace
xsltParseStylesheetProcess
xsltRegisterExtPrefix
xsltStyleGetExtData
bypass
_xsltStylesheet
byte
xsltSaveResultTo
xsltSaveResultToFilename
bytes
xsltGetUTF8Char
xsltRunStylesheet
xsltSaveResultToFd
xsltSaveResultToFile

Letter c:

cache
_xsltStackElem
xsltReleaseRVT
calibration
xsltCalibrateAdjust
call
xslAddCall
xslDropCall
xsltDocLoaderFunc
xsltExtensionInstructionResultRegister
call-template
_xsltStyleItemCallTemplate
_xsltStylePreComp
xsltCallTemplate
callback
xsltExtElementLookup
xsltExtModuleElementLookup
xsltExtModuleElementPreComputeLookup
xsltExtModuleTopLevelLookup
xsltGetSecurityPrefs
xsltRegisterExtModuleElement
xsltRegisterExtModuleFunction
xsltRegisterExtModuleTopLevel
xsltRunStylesheet
xsltRunStylesheetUser
xsltSetDebuggerCallbacks
xsltSetSecurityPrefs
xsltXPathFunctionLookup
callbacks
xsltSetDebuggerCallbacks
called
_xsltTemplate
xsltCheckExtPrefix
xsltCheckExtURI
xsltDoSortFunction
xsltEvalGlobalVariables
xsltEvalOneUserParam
xsltExtInitFunction
xsltExtShutdownFunction
xsltFindTemplate
xsltFreeRVTs
xsltGetPlainNamespace
xsltGetProfileInformation
xsltInitElemPreComp
xsltLocalVariablePush
xsltParseStylesheetCallerParam
xsltQuoteOneUserParam
xsltRegisterExtElement
xsltRegisterExtFunction
xsltRegisterExtPrefix
xsltSetCtxtSortFunc
xsltSetGenericDebugFunc
xsltSetGenericErrorFunc
xsltSetTransformErrorFunc
xsltSort
xsltStyleExtInitFunction
xsltStyleExtShutdownFunction
xsltXPathGetTransformContext
caller
xsltApplyOneTemplate
xsltAttrTemplateValueProcess
xsltAttrTemplateValueProcessNode
xsltEvalAVT
xsltEvalAttrValueTemplate
xsltEvalStaticAttrValueTemplate
xsltEvalTemplateString
xsltEvalXPathString
xsltEvalXPathStringNs
xsltFindTemplate
xsltGetNsProp
xsltGetProfileInformation
xsltXPathCompile
xsltXPathCompileFlags
calls=
xsltGetProfileInformation
can
_xsltCompilerCtxt
_xsltTransformContext
xsltDocLoaderFunc
xsltEvalAttrValueTemplate
xsltExtElementLookup
xsltFindTemplate
xsltFormatNumberConversion
xsltParseTemplateContent
xsltSetGenericDebugFunc
xsltSetGenericErrorFunc
cascading
XSLT_GET_IMPORT_INT
XSLT_GET_IMPORT_PTR
cases
xsltLoadStylesheetPI
casting
XML_CAST_FPTR
catch
_xsltFormatNumberInfo
_xsltTransformContext
chained
_xsltDecimalFormat
_xsltDocument
_xsltElemPreComp
_xsltStackElem
_xsltStylePreComp
_xsltTemplate
change
xsltFindTemplate
xsltGetSpecialNamespace
changed
_xsltCompilerNodeInfo
changes
xsltParseStylesheetDoc
channel
xsltSaveResultTo
char
xsltGetUTF8Char
character
xsltFormatNumberConversion
characters
xsltFormatNumberConversion
chars
_xsltFormatNumberInfo
xsltIsBlank
check
CHECK_STOPPED
CHECK_STOPPED0
CHECK_STOPPEDE
IS_XSLT_ATTR_FAST
IS_XSLT_ELEM_FAST
NODE_IS_KEYED
XSLT_HAS_INTERNAL_NSMAP
XSLT_IS_TEXT_NODE
xsltSecurityCheck
checking
xsltGetSecurityPrefs
xsltSetSecurityPrefs
checks
xsltCompileAttr
child
_xsltCompilerNodeInfo
xsltCopyTextString
clash
xsltGetSpecialNamespace
class:
xsltFormatNumberConversion
cleared
xsltPointerListClear
close
xsltSaveResultToFd
xsltSaveResultToFile
closed
xsltParseStylesheetDoc
coalescing
_xsltTransformContext
code
_xsltStylesheet
_xsltTemplate
xsltCopyNamespaceList
xsltGetNamespace
xsltInitCtxtKeys
collected
xsltExtensionInstructionResultRegister
collector
xsltExtensionInstructionResultFinalize
xsltRegisterLocalRVT
xsltRegisterPersistRVT
xsltRegisterTmpRVT
com
xsltFormatNumberConversion
combination
xsltSetCtxtParseOptions
coming
xsltCompileAttr
comment
xsltComment
common
_xsltElemPreComp
comp
xsltFreeCompMatchList
compExpr
_xsltStyleBasicExpressionItem
compared
xsltStrxfrm
comparison
_xsltPrincipalStylesheetData
xsltFindTemplate
compatibility
XSLT_ITEM_COMPATIBILITY_FIELDS
XSLT_REFACTORED_KEYCOMP
compilation
XSLT_REFACTORED_XPATHCOMP
_xsltCompilerCtxt
_xsltStylesheet
xsltDocLoaderFunc
xsltParseAnyXSLTElem
xsltParseGlobalVariable
xsltParseSequenceConstructor
xsltXPathCompile
xsltXPathCompileFlags
compile-time
_xsltStylesheet
xsltCheckExtPrefix
xsltCheckExtURI
xsltRegisterExtPrefix
compiled
_xsltCompilerNodeInfo
_xsltStackElem
_xsltStylesheet
xsltApplyImports
xsltApplyTemplates
xsltCallTemplate
xsltChoose
xsltEvalXPathPredicate
xsltEvalXPathString
xsltEvalXPathStringNs
xsltForEach
xsltIf
xsltNormalizeCompSteps
xsltTransformFunction
compiler
XSLT_CCTXT
compiles
xsltParseAnyXSLTElem
compiling
xsltAllocateExtra
completed
xsltGetProfileInformation
compression
xsltSaveResultToFilename
computation
XSLT_REFACTORED_KEYCOMP
computations
xsltNewDocument
xsltNewStyleDocument
compute
xsltParseStylesheetCallerParam
computed
_xsltStackElem
_xsltStylePreComp
_xsltTemplate
xsltApplyOneTemplate
xsltAttrTemplateValueProcess
xsltAttrTemplateValueProcessNode
xsltCopy
xsltEvalAVT
xsltEvalAttrValueTemplate
xsltEvalTemplateString
xsltEvalXPathString
xsltEvalXPathStringNs
xsltInitAllDocKeys
xsltLoadDocument
xsltLoadStyleDocument
construct
xsltMessage
constructor
_xsltStackElem
xsltApplyOneTemplate
xsltEvalTemplateString
xsltParseSequenceConstructor
consumption
XSLT_PARSE_OPTIONS
contain
xsltEvalAttrValueTemplate
xsltEvalStaticAttrValueTemplate
contained
xsltEvalAttrValueTemplate
xsltEvalStaticAttrValueTemplate
xsltLoadStylesheetPI
container
xsltParseTemplateContent
containing
_xsltTemplate
xsltCompilePattern
xsltMessage
xsltSetDebuggerCallbacks
contains
xsltGetQNameURI
content
_xsltCompilerNodeInfo
_xsltTransformContext
xsltApplyOneTemplate
xsltCopyTextString
xsltParseAnyXSLTElem
xsltParseSequenceConstructor
xsltParseTemplateContent
xsltPointerListClear
xsltPointerListFree
content-model
xsltParseTemplateContent
contexts
_xsltCompilerCtxt
control
xslHandleDebugger
converts
xsltEvalTemplateString
copied
xsltCopyTextString
xsltGetUTF8Char
copies
xsltAttrTemplateProcess
copy
_xsltStyleItemCopy
_xsltStylePreComp
xsltCopyNamespaceList
copy-of
_xsltStyleItemApplyTemplates
_xsltStyleItemSort
_xsltStylePreComp
xsltCopyOf
copying
xsltCopyNamespaceList
correct
xsltCalibrateAdjust
corresponding
_xsltElemPreComp
xsltGetProfileInformation
xsltNamespaceAlias
created
_xsltTransformContext
xsltCopyTextString
xsltExtensionInstructionResultFinalize
xsltExtensionInstructionResultRegister
xsltFreeLocale
xsltGetNamespace
xsltGetSpecialNamespace
xsltRegisterLocalRVT
xsltStrxfrm
creating
xsltCheckWrite
xsltRunStylesheet
xsltRunStylesheetUser
creation
_xsltCompilerNodeInfo
cur
xslHandleDebugger
curly
xsltEvalAttrValueTemplate
xsltEvalStaticAttrValueTemplate
currently
xsltRegisterTmpRVT

A-I J-R S-a b-c d-e f-g h-i j-m n-o p-p q-s t-u v-x y-z

Daniel Veillard

PK|0]  Libxslt-Logo-180x168.gifnu[GIF89aD 552,-)bb\KLJ|qro$&#᜝jkd;<9KRR YZU12.turCEBс򹹱,0*(*&qrpQRM⭭997DKL;EFopm')$IJFlnj"efdjliVXV}~|汱debŽz|y]]X쩩xyv25/ab`|}z]^\wxughevvtijh~y{x򪪥685}}q_`]bcaZZYrtq Z\ZZ]]慇AC?WWU!#WZYŹUUQ{{pQRPFHDPTS NPLQWUȽAGI񶶨  ]a`>?<IOP-66  &+(Ν}}v %#/0,umnl ַSWWԞľbeeä߯orp!,D ȑj(\ȰÇ#JHŋ3> V́@C Bɓ(S\ lT('ɳϟ@ JѣH<Ψl Xjʵ+V&O6Ca^Ӫ]˶e(UM@81߿ L']x- 0ϽPT,ϠCMZ] T n̺P,qTHxD & Nq䨑zbУSu!@PH/ËO/,BBϣp| Z'XP蒄3 7D(! iwhP|ŇP|C] /ز9 pb+ԕ-;᷀pC0$iH$+&D+8 )2ȐI&B  L!d䠆9@Is$e d Igxe C<-c)BM %K WB -B -aLpKHh8"A:@= N qGy aB*` ,`mjBZ4.& # ͼ֋'zRF@!eG~9 #707$hPBTC 01 WF^ hB %/ 3Wd3  eM)4M)P#5:z :lHxSg ` QL 2E(T((Dj *dZj'>"߃]@CA LxyMᄰ y#U. ǠqP/$:N`; *qGG K,%4/8D=͍B,LbB(jDC2wBw[Z(C-.t?;u& p" a [@(h|` ]0!B夈9s]ܴ$ JeMk! х c(7 {p{ Ѐh,OE/Ppb `|$2"Cf}SH p b =``o %c u@G YB ܣD-($; T#*[P^w.-OX& Zt^A /h%bLqB|P^lBqH(dJPk3#f ؄:P %8D0 B@1qXhY 4S@@(GB2`@ 4ER$x@RkȣCы2СG`j{@C xy(c8G7P>Ӏ <$$ZkP@!l>09(ffaAZ4F6f`u,fQ (ͷ<`u|B *TPR/a hNj P@!Eu|,o+p ( p0^ ²ఙX;- 2@*MB @)=H:!.A C8 J4yp`80 ,xjqʓh381|0CykL@fP6!YL0?PB @MwȯbY5f[Dy {!~5saN7h$!@C(X JbЃ`pw\1hN$R@5@ TH$l^-/Ќ:6hA0p׻͘Ebk3T[6h0s@PE4%|鱍(z301:>opU!ۈCHQ`+x1\. ȇ* )nQ Ls F20nh! ;h[sv;0ă 9t7x=HXbNjx>PK00Lt=hA>[E4 DG],!&.ç#l.{ h\ (P@`^d`0dp<pFh b, 0XC (ρ9p6 ߣ )|?|#g`/ p˧ :P5 @ ȽtGWw@2&-f  (h 06PPczL9$HO(@3O ` hpAp:SpG`@ "0 `X%JOnOp ] ʧ ˂jhP E ${ wswpvw g\9j)'U: pr%N@]0 t  N@^ @kLa($ PPl 6pD 3%Pc@S5`8Y]n<d >pK ʗo P? hPUx~Www~zDžaL`` w0`@ I` pL0Q##5@```)Lgu0`N(`y?C|9u^ $`$i & 26x `~J[=@Yj[p:1PbzaAI".n/~q98&t”&pSIAX[;*PI!M2| u*09io YPG7 22+ b2j@pw>~Ҩ19 #&";8B ~PJ852`5paO@opư 91I (yjY2=22Dq2mA,cPQ Zt}IaȐ  N 0 )X-v h~i&z `H@D[M0f!*p 8Xc8iI 1▮(ŷpDp6` 6@ {}ٙ``c(n,Z,7 &@2ҩq 57!H7 nq:6P]zZD`j1j['n˱^Ra@\)g03 n×AcO`$ &0z e0Mz# p[2V`ƚ#0*H l`nI,2%w"@)/(zq*ۢYmpPGPZBP 0׫}7 @I cI qp]n1  L`h3 .6, P4>B   Uȯ)$ & V10Dl&Y^d>3pe C00~ Gw0P0zv>a P c )@ fQ327y k0& (`/N痀 P@H D  qb[P[@[[P [/ $p 1+|a/G V@"G s $xΡ)*Y:  ~0 NPH{.kE 00t[Wy#5 wr )*"q`&0`B`QS bS 8 ȔȨ8QcS``$D: @ [ G1_ p >P Y7> 1`82*0da Hȷ`,^j` ^3PuI T!9@ Hmy`6d?P1p̫ + ࿳+z!1P  ֞, ܸ5`;2G9 А0.E 2;HВPGE J! q Й( Q\h M] < 7P x <=` .1 Pn n2 X(3 PW 16 D WpPb 0Ğ\r ]W [4 ւVi bʫ+ 0~24m.@`%`2 p @@N0 Q - uC3 Bp<0]@R\haMU\e>16(p0Ӈ.* ھ=2n: ѾqV߅ @3&@'ocR^lCCJtPz/6ׇ \& ]\^N0sD  z+Py@0n[K1̒ ЧYp}FY@c&0 +]bOVԀJBx>U@?7bObwP s {iz"& AB~`FT= ETr yPE K =` !+F`Hh0A(`pd5Thrΐ# !KD ֔@0dazAb \dHқ6 UY4r1Sdڔƃ4hs *KDQ 6m !S@HRL3x2Yy%S3ljaŒ2"F :Mxd$=I?\#ɐ AqG"G/Di,ĄugCT5?T\4$St9%~He%K*YFUSdT*qTcJ&rTZ]@R_תeMÜ"Y5@fD!6;1*V"'.%+H&0=q젢T07m@'^0`k8`Q=1pVLAZ A8$! Sd%QF)% 0SB < ʏ4:d腡~h@ 8%'(>Zp P Vk2`{db aLfd?E0!Nni(Qaj(*]` +H*NF1481'BFG6%2k9scnboHVX@`d! g$1fHpfP+Aj@0x"bb7"(gP` ތHnH 0ag+z$&!"8PBVb`L2%nT,Ȃ ݨ4x 2Ш RxrیMh!1@cZa7\@Iaa^"Vf5H^AZq]< *x @by*C]ߥW3 /@҅zma*$%  BHw&!Ic@`r d`[\# S.n HaDAIpP a#-/0)aUF *AX$n0@0/4B8E$ЀDa ְ+Ġ6)ԁ &>ph" B'M!xcH, MLq7 ( -a.!r0 WC)MyJTd%+X  Z0 ZhYW[L \#  Cf $r`d`RЋ^N AoDD#{c HGz1H7@- ӄ5 8x)@C-=  Ђ #%iIMzR+e)0ȁ ā()x2ɰL`Ni2.$S}.b AL0]0A;{Z(z`SMH@/ AUO5@ @:dRG 6:09le-{Yf= dAN`hM VЅ\kV2V%` 5$! q}ԮVЅ\op50@-tBj*n:`jDk -L= @oיpG`8`0"`np!085ni`a ήnt^W0PהFr ;5(uF}c YA.jYXKfr䦐`XB x }AդYc&s܅xf8YMyI*0Kq/\ ZЃ&t mު vhH;ey@q Lx[iPZԡp#}jTǙ  @#.j+"ETZ׻ PQBVxu)%[fvlhG[Ӗ6 Pllmp[&7LQ 8;PK|0]/ news.htmlnu[ News
Action against software patentsGNOME2 LogoW3C logoRed Hat Logo
Made with Libxslt Logo

The XSLT C library for GNOME

News

Main Menu
Related links
API Indexes

See the git page to get a description of the recent commits.

Those are the public releases made:

v1.1.31: Oct 06 2017

  • Portability:
    Fix win32/configure.js (Nick Wellnhofer)
  • Bug Fixes:
    Fix pkg-config related regressions in configure script (Nick Wellnhofer)
  • Improvements:
    Adjust expected error output for libxml2 changes (Nick Wellnhofer),
    Misc autoconf updates (Nick Wellnhofer)

v1.1.30: Sep 04 2017

  • Documentation:
    Misc doc fixes (Nick Wellnhofer)
  • Portability:
    Look for libxml2 via pkg-config first (Elliott Sales de Andrade),
    Change default SOPREFIX on Windows to "bin" (Nick Wellnhofer),
    Add WIN32_EXTRA_LDFLAGS to tests/plugins/Makefile.am (Michael Haubenwallner)
  • Bug Fixes:
    Also fix memory hazards in exsltFuncResultElem (Nick Wellnhofer),
    Fix NULL deref in xsltDefaultSortFunction (Nick Wellnhofer),
    Fix memory hazards in exsltFuncFunctionFunction (Nick Wellnhofer),
    Fix memory leaks in EXSLT error paths (Nick Wellnhofer),
    Fix memory leak in str:concat with empty node-set (Nick Wellnhofer),
    Fix memory leaks in error paths (Nick Wellnhofer),
    Switch to xmlUTF8Strsize in numbers.c (Nick Wellnhofer),
    Fix NULL pointer deref in xsltFormatNumberFunction (Nick Wellnhofer),
    Fix UTF-8 check in str:padding (Nick Wellnhofer),
    Fix xmlStrPrintf argument (Nick Wellnhofer),
    Check for overflow in _exsltDateParseGYear (Nick Wellnhofer),
    Fix double to int conversion (Nick Wellnhofer),
    Check for overflow in exsltDateParseDuration (Nick Wellnhofer),
    Change version of xsltMaxVars back to 1.0.24 (Nick Wellnhofer),
    Disable xsltCopyTextString optimization for extensions (Nick Wellnhofer),
    Create DOCTYPE for HTML version 5 (Nick Wellnhofer),
    Make xsl:decimal-format work with namespaces (Nick Wellnhofer),
    Remove norm:localTime extension function (Nick Wellnhofer),
    Check for integer overflow in xsltAddTextString (Nick Wellnhofer),
    Detect infinite recursion when evaluating function arguments (Nick Wellnhofer),
    Fix memory leak in xsltElementAvailableFunction (Nick Wellnhofer),
    Fix for pattern predicates calling functions (Nick Wellnhofer),
    Fix cmd.exe invocations in Makefile.mingw (Nick Wellnhofer),
    Don't try to install index.sgml (Nick Wellnhofer),
    Fix symbols.xml (Nick Wellnhofer),
    Fix heap overread in xsltFormatNumberConversion (Nick Wellnhofer),
    Fix <xsl:number level="any"/> for non-element nodes (Nick Wellnhofer),
    Fix unreachable code in xsltAddChild (mahendra.n),
    Change version number in xsl:version warning (Nick Wellnhofer),
    Avoid infinite recursion after failed param evaluation (Nick Wellnhofer),
    Stop if potential recursion is detected (Nick Wellnhofer),
    Consider built-in templates in apply-imports (Nick Wellnhofer),
    Fix precedence with multiple attribute sets (Nick Wellnhofer),
    Rework attribute set resolution (Nick Wellnhofer)
  • Improvements:
    Add .travis.yml (Nick Wellnhofer),
    Silence tests a little (Nick Wellnhofer),
    Set LIBXML_SRC to absolute path (Nick Wellnhofer),
    Add missing #include (Nick Wellnhofer),
    Adjust expected error messages in tests (Nick Wellnhofer),
    Make xsltDebug more quiet (Nick Wellnhofer),
    New-line terminate error message that missed this convention (Jan Pokorn),
    Use xmlBuffers in EXSLT string functions (Nick Wellnhofer),
    Switch to xmlUTF8Strsize in EXSLT string functions (Nick Wellnhofer),
    Check for return value of xmlUTF8Strlen (Nick Wellnhofer),
    Avoid double/long round trip in FORMAT_ITEM (Nick Wellnhofer),
    Separate date and duration structs (Nick Wellnhofer),
    Check for overflow in _exsltDateDifference (Nick Wellnhofer),
    Clamp seconds field of durations (Nick Wellnhofer),
    Change _exsltDateAddDurCalc parameter types (Nick Wellnhofer),
    Fix date:difference with time zones (Nick Wellnhofer),
    Rework division/remainder arithmetic in date.c (Nick Wellnhofer),
    Remove exsltDateCastDateToNumber (Nick Wellnhofer),
    Change internal representation of years (Nick Wellnhofer),
    Optimize IS_LEAP (Nick Wellnhofer),
    Link libraries with libm (Jussi Kukkonen),
    Rename xsltCopyTreeInternal to xsltCopyTree (Nick Wellnhofer),
    Update linker version script (Nick Wellnhofer),
    Add local wildcard to version script (Nick Wellnhofer),
    Make some symbols static (Nick Wellnhofer),
    Remove redundant NULL check in xsltNumberComp (mahendra.n),
    Fix forwards compatibility for imported stylesheets (Nick Wellnhofer),
    Reduce warnings in forwards-compatible mode (Nick Wellnhofer),
    Precompute XSLT elements after preprocessing (Nick Wellnhofer),
    Fix whitespace in xsltParseStylesheetTop (Nick Wellnhofer),
    Consolidate recursion checks (Nick Wellnhofer),
    Treat XSLT_STATE_STOPPED same as errors (Nick Wellnhofer),
    Make sure that XSLT_STATE_STOPPED isn't overwritten (Nick Wellnhofer),
    Add comment regarding built-in templates and params (Nick Wellnhofer),
    Rewrite memory management of local RVTs (Nick Wellnhofer),
    Validate QNames of attribute sets (Nick Wellnhofer),
    Add xsl:attribute-set regression tests (Nick Wellnhofer),
    Ignore imported stylesheets in xsltApplyAttributeSet (Nick Wellnhofer)

1.1.29: May 24 2016

  • Security:
    CVE-2015-7995 Fix for type confusion in preprocessing attributes (Daniel Veillard)
  • Documentation:
  • Portability:
    Fix a portibility problem with previous commit (Eduard Sanou),
    Fix MingW build (Nick Wellnhofer),
    Correctly emulate snprintf on older MSVC versions (Nick Wellnhofer),
    Add Python script to run some tests on Windows (Nick Wellnhofer),
    Remove /OPT:NOWIN98 option (Nick Wellnhofer),
    Visual Studio 14 CTP defines snprintf() (Daniel Veillard),
    Use AC_PATH_TOOL to find libgcrypt-config and xml2-config (Micha Grny),
    Use $libdir for LIBXSLT_DEFAULT_PLUGINS_PATH (larryhaja),
    Use mkdir macro also in case if mingw32. (Lars Kanis),
    Add math library to executable link flags (Nick Wellnhofer),
    Fix quoting of xlocale test program in configure.in (Nick Wellnhofer)
  • Bug Fixes:
    Fix OOB heap read in xsltExtModuleRegisterDynamic (Nick Wellnhofer),
    Remove CDATA markup from libxslt_tutorial.c (Nick Wellnhofer),
    Remove generated headers from dist tarball (Nick Wellnhofer),
    Mark XML file argument as repeatable (Nick Wellnhofer),
    Keep timezone in date:add (Nick Wellnhofer),
    Fix buffer overflow in exsltDateFormat (Nick Wellnhofer),
    Fix saxon:line-number with namespace nodes (Nick Wellnhofer),
    Fix dyn:map with namespace nodes (Nick Wellnhofer),
    Fix error handling in Saxon extension functions (Nick Wellnhofer),
    Fix double free in libexslt hash functions (Nick Wellnhofer),
    Fix libxslt format warnings (David Kilzer),
    Fix xsltNumberFormatGetMultipleLevel (Nick Wellnhofer),
    Fix use-after-free in xsltDocumentFunctionLoadDocument (Nick Wellnhofer),
    Always initialize EXSLT month and day to 1 (Nick Wellnhofer),
    Fix possible NULL pointer deref in transform.c (mahendra.n),
    Fix possible NULL pointer deref in xsltCopyTextString (Nick Wellnhofer),
    Fix possible NULL pointer deref in libexslt/functions.c (Nick Wellnhofer),
    Fix possible NULL pointer deref in xsltproc.c (mahendra.n),
    Fix possible NULL pointer deref in preproc.c (mahendra.n),
    Fix LIBXSLT_DEFAULT_PLUGINS_PATH in xsltconfig.h (Nick Wellnhofer),
    Fix memory leak in xsltNumberFormat (Albert Astals Cid),
    Error in doc/Makefile.am (Brice De Bruyne),
    Detect attribute sets recursions in more cases (Daniel Veillard),
    Check name vales for attribute-set elements (Daniel Veillard),
    Fix hang with namespace-alias, fixes #700689 (Shaun McCance),
    Fix str:align with UTF-8 strings (Nick Wellnhofer),
    Fix for compiled XPath helpers (Nick Wellnhofer),
    Check return value of exsltFuncNewFunctionData (Nick Wellnhofer),
    Fix return value of xsltRegisterExtModuleElement (Nick Wellnhofer),
    Call xmlNodeGetSpacePreserve with element node (Nick Wellnhofer),
    Set namespaces before evaluating xsl:number (Nick Wellnhofer),
    Make --maxvars option work (Per Hedeland),
    Set correct context node when initializing xsl:keys (Nick Wellnhofer),
    Fix for bug 436589 (Imran Azeezullah),
    Memory leak in xsltCompileIdKeyPattern error path (Nick Wellnhofer),
    Fix handling of UTF-8 strings in EXSLT crypto module (Nick Wellnhofer),
    Fix certain patterns with predicates (Nick Wellnhofer),
    Fix direct pattern matching (Nick Wellnhofer),
    Fix str:padding to work with UTF-8 strings (Nick Wellnhofer),
    EXSLT function str:replace() is broken as-is (Nick Wellnhofer),
    Fix a couple of places where (f)printf parameters were broken (Daniel Veillard)
  • Improvements:
    Add support timestamps from environment (Daniel Veillard),
    Add missing tests to dist tarball (Nick Wellnhofer),
    Improve error message in xsltAddTemplate and fix test (Nick Wellnhofer),
    Allow REC tests with empty stdout (Nick Wellnhofer),
    Fix GPL license in HTML files as well (Nick Wellnhofer),
    Fix status message in EXSLT dynamic tests (Nick Wellnhofer),
    Add public function macros to xsltlocale.h (Nick Wellnhofer),
    Make valgrind tests work with libtool (Nick Wellnhofer),
    Add a couple of xsl:number tests (Nick Wellnhofer),
    Lower and upper bound for format token "i" (Nick Wellnhofer),
    Lower bound for format token "a" (Nick Wellnhofer),
    Handle negative xsl:number values (Nick Wellnhofer),
    Round xsl:number values to nearest integer (Nick Wellnhofer),
    Allow {URI}NCName syntax for user parameters (Nick Wellnhofer),
    Fix endTimer parameter type (Nick Wellnhofer),
    Fix error messages for unsupported methods (Nick Wellnhofer),
    Replace sprintf with snprintf (David Kilzer),
    Enforce two digit exponent under MSVC (Nick Wellnhofer),
    Rework xsltNumberFormat to fix warning (Nick Wellnhofer),
    Fix a couple of GPL licences found in the documentation (Daniel Veillard),
    Use hash table to lookup named templates (Christian Ceelen),
    Fix to reg tests post 737840 fix (Daniel Veillard),
    Don't fail build the man page if xsltproc is not present (Daniel Veillard),
    Re-adding xsltproc.1 (Daniel Veillard),
    Fix time type in xsltSaveProfiling (Nick Wellnhofer),
    Remove unused parameters (Nick Wellnhofer),
    Suppress unused variable warning. (Nick Wellnhofer),
    Remove unused variable in xsltGenerateIdFunction (Nick Wellnhofer),
    Add test case for XPath function args in error case (Nick Wellnhofer),
    Add comment about known-to-fail test (Nick Wellnhofer),
    Adjust expected test output (Nick Wellnhofer),
    Helper functions to evaluate compiled XPath expressions (Nick Wellnhofer),
    Add tests for crypto:rc4 (Nick Wellnhofer),
    Add first test case for EXSLT crypto module (Nick Wellnhofer),
    Separate function for predicate matching in patterns (Nick Wellnhofer),
    Initialize pseudo random number generator with current time or optional command line parameter (Nils Werner),
    Adding doc update related to 1.1.28 (Daniel Veillard)
  • Cleanups:
    Remove bogus test file (Nick Wellnhofer),
    Add warning message to expected test output (Nick Wellnhofer)

1.1.28: Nov 21 2012

  • Portability:
    Fix python build by using libxsltmod_la_CPPFLAGS instead of AM_CPPFLAGS (Alexandre Rostovtsev),
    configure should be more careful with linker script (Igor Pashev),
    add gcrypt library in LIBADD, not LDFLAGS, as recommended (Roumen Petrov)
  • Bug fixes:
    Fix generate-id() to avoid generating the same ID (Stewart Brodie),
    Fix crash with empty xsl:key/@match attribute (Nick Wellnhofer),
    Crash when passing an uninitialized variable to document() (Nick Wellnhofer),
    Add missing test docs to EXTRA_DIST (Nick Wellnhofer),
    Fix regression: Default namespace not correctly used (Nick Wellnhofer)
  • Cleanups:
    Remove xsltTransStorageAdd and xsltTransStorageRemove from symbols.xml (Daniel Veillard),
    autogen.sh cleanup (Daniel Richard),
    consistent use of xslt processor (Roumen Petrov),
    Add object files in tests/plugins to .gitignore (Nick Wellnhofer),
    Fix error on bug-165 regression test (Daniel Veillard),
    Remove xsltTransStorageAdd and xsltTransStorageRemove (Daniel Veillard),

1.1.27: Sep 12 2012

  • Portability:
    xincludestyle wasn't protected with LIBXML_XINCLUDE_ENABLED (Michael Bonfils),
    Portability fix for testThreads.c (IlyaS),
    FreeBSD portability fixes (Pedro F. Giffuni),
    check for gmtime - on mingw* hosts will enable date-time function (Roumen Petrov),
    use only native crypto-API for mingw* hosts (Roumen Petrov),
    autogen: Only check for libtoolize (Colin Walters),
    minimal mingw support (Roumen Petrov),
    configure: acconfig.h is deprecated since autoconf-2.50 (Stefan Kost),
    Fix a small out of tree compilation issue (Hao Hu),
    Fix python generator to not use deprecated xmllib (Daniel Veillard),
    link python module with python library (Frederic Crozat)
  • Documentation:
    Tiny doc improvement (Daniel Veillard),
    Various documentation fixes for docs on internals (C. M. Sperberg-McQueen)
  • Bug fixes:
    Report errors on variable use in key (Daniel Veillard),
    The XSLT namespace string is a constant one (Daniel Veillard),
    Fix handling of names in xsl:attribute (Nick Wellnhofer),
    Reserved namespaces in xsl:element and xsl:attribute (Nick Wellnhofer),
    Null-terminate result string of cry:rc4_decrypt (Nick Wellnhofer),
    EXSLT date normalization fix (James Muscat),
    Exit after compilation of invalid func:result (Nick Wellnhofer),
    Fix for EXSLT func:function (Nick Wellnhofer),
    Rewrite EXSLT string:replace to be conformant (Nick Wellnhofer),
    Avoid a heap use after free error (Chris Evans),
    Fix a dictionary string usage (Chris Evans),
    Output should not include extraneous newlines when indent is off (Laurence Rowe),
    document('') fails to return stylesheets parsed from memory (Jason Viers),
    xsltproc should return an error code if xinclude fails (Malcolm Purvis),
    Forwards-compatible processing of unknown top level elements (Nick Wellnhofer),
    Fix system-property with unknown namespace (Nick Wellnhofer),
    Hardening of code checking node types in EXSLT (Daniel Veillard),
    Hardening of code checking node types in various entry point (Daniel Veillard),
    Cleanup of the pattern compilation code (Daniel Veillard),
    Fix default template processing on namespace nodes (Daniel Veillard),
    Fix a bug in selecting XSLT elements (Daniel Veillard),
    Fixed bug #616839 (Daniel Mustieles),
    Fix some case of pattern parsing errors (Abhishek Arya),
    preproc: fix the build (Stefan Kost),
    Fix a memory leak with xsl:number (Daniel Veillard),
    Fix a problem with ESXLT date:add() with January (money_seshu Dronamraju),
    Fix a memory leak if compiled with Windows locale support (Daniel Veillard),
    Fix generate-id() to not expose object addresses (Daniel Veillard),
    Fix curlies support in literals for non-compiled AVTs (Nick Wellnhofer),
    Allow whitespace in xsl:variable with select (Nick Wellnhofer),
    Small fixes to locale code (Nick Wellnhofer),
    Fix bug 602515 (Nick Wellnhofer),
    Fix popping of vars in xsltCompilerNodePop (Nick Wellnhofer),
    Fix direct pattern matching bug (Nick Wellnhofer)
  • Improvements:
    Add the saxon:systemId extension (Mike Hommey),
    Add an append mode to document output (Daniel Veillard),
    Add new tests to EXTRA_DIST (Nick Wellnhofer),
    Test for bug #680920 (Nick Wellnhofer),
    fix regresson in Various "make distcheck" and other fixes (Roumen Petrov),
    Various "make distcheck" and other fixes (Daniel Richard G),
    Fix portability to upcoming libxml2-2.9.0 (Daniel Veillard),
    Adding --system flag support to autogen.sh (Daniel Veillard),
    Allow per-context override of xsltMaxDepth, introduce xsltMaxVars (Jrme Carretero),
    autogen.sh: Honor NOCONFIGURE environment variable (Colin Walters),
    configure: support silent automake rules if possible (Stefan Kost),
    Precompile patterns in xsl:number (Nick Wellnhofer),
    Fix some warnings in the refactored code (Nick Wellnhofer),
    Adding new generated files (Daniel Veillard),
    profiling: add callgraph report (Stefan Kost)
  • Cleanups:
    Big space and tabs cleanup (Daniel Veillard),
    Fix authors list (Daniel Veillard),
    Cleanups some of the test makefiles (Daniel Richard),
    Remove .cvsignore files which are not needed anymore (Daniel Veillard),
    Cleanup some misplaced spaces and tabs (Daniel Veillard),
    Augment list of ignored files (Daniel Veillard),
    configure: remove checks for isinf and isnan as those are not used anyway (Stefan Kost),
    Point to GIT for source code and a bit of cleanup (Daniel Veillard),
    Get rid of specific build setup and STATIC_BINARIES (Daniel Veillard)

1.1.26: Sep 24 2009

  • Improvement: Add xsltProcessOneNode to exported symbols for lxml (Daniel Veillard)
  • Bug fixes: Fix an idness generation problem (Daniel Veillard), 595612 Try to fix some locking problems (Daniel Veillard), Fix a crash on misformed imported stylesheets (Daniel Veillard)

1.1.25: Sep 17 2009

  • Features: Add API versioning and various cleanups (Daniel Veillard), xsl:sort lang support using the locale (Nick Wellnhofer and Roumen Petrov)
  • Documentation: Fix the download links for Solaris (Daniel Veillard), Fix makefile and spec file to include doc in rpm (Daniel Veillard)
  • Portability: Make sure testThreads is linked with pthreads (Daniel Veillard), Fix potential crash on debug of extensions Solaris (Ben Walton), applied patch from Roumen Petrov for mingw cross compilation problems (Roumen Petrov), patch from Richard Jones to build shared libs with MinGW cross-compiler (Richard Jones), fix include path when compiling with MinGW (Roumen Petrov), portability fixes ( Nick Wellnhofer and Roumen Petrov)
  • Bug fixes: Big fixes of pattern compilations (Nick Wellnhofer), Fix uses of xmlAddChild for error handling (Daniel Veillard), Detect deep recusion on function calls (Daniel Veillard), Avoid an error in namespace generation (Martin), Fix importing of encoding from included stylesheets (Nick Wellnhofer), Fix problems with embedded stylesheets and namespaces (Martin), QName parsing fix for patterns (Martin), Crash compiling stylesheet with DTD (Martin), Fix xsl:strip-space with namespace and wildcard (Nick Wellnhofer), Fix a mutex deadlock on unregistered extensions (Nix), 567192 xsltproc --output option ignore --xinclude (Joachim Breitner), Fix redundant headers in list (Daniel Veillard), 134754 Configure's --with-html-dir related fixes (Julio M. Merino Vidal), 305913 a serious problem in extensions reentrancy (Daniel Veillard), Fix an idness issue when building the tree (Daniel Veillard), Fixed indexing error reported by Ron Burk on the mailing list. (William M. Brack), prevent some unchecked pointer accesses (Jake Goulding), fix for CVE-2008-2935 libexslt RC4 encryption/decryption functions Daniel (Daniel Veillard), avoid a quadratic behaviour when hitting duplicates (Daniel Veillard), 544829 fixed option --with-debugger (Arun Ragnavan), 541965 fixed incorrect argument popping in exsltMathAtan2Function (William M. Brack), fix problem with string check for element-available (Ron Burk), 539741 added code to handle literal within an AVT (William M. Brack)
  • Improvements: Allow use of EXSLT outside XSLT (Martin), Support Esperanto locale (Nick Wellnhofer), Change how attributes are copied for id and speed (Daniel Veillard), Add API versioning and various cleanups (Daniel Veillard), Adding a test program to check thread reentrancy (Daniel Veillard), big patch from finishing xsl:sort lang support (Roumen Petrov), add xsl:sort lang support using the locale (Nick Wellnhofer)
  • Cleanups: Label xsltProcessOneNode as static (Daniel Veillard), git setup (Daniel Veillard), fixed typo detected by new libxml2 code (William M. Brack), xsltExtFunctionLookup was defined but never implemented (Ralf Junker)

1.1.24: May 13 2008

  • Documentation: man page fix (Vincent Lefevre).
  • Bug fixes: pattern bug fix, key initialization problems, exclusion of unknown namespaced element on top of stylesheets, python generator syntactic cleanup (Martin)

1.1.23: Apr 8 2008

  • Documentation: fix links for Cygwin DocBook setup (Philippe Bourcier), xsltParseStylesheetDoc doc fix (Jason Viers), fix manpage default maxdepth value
  • Bug fixes: python segfault (Daniel Gryniewicz), week-in-year bug fix (Maurice van der Pot), fix python iterator problem (William Brack), avoid garbage collection problems on str:tokenize and str:split and function results (William Brack and Peter Pawlowski) superfluous re-generation of keys (William Brack), remove superfluous code in xsltExtInitTest (Tony Graham), func:result segfault fix (William Brack), timezone offset problem (Peter Pawlowski),
  • Portability fixes: old gcrypt support fix (Brent Cowgill), Python portability patch (Stephane Bidoul), VS 2008 fix (Rob Richard)

1.1.22: Aug 23 2007

  • Bug fixes: RVT cleanup problems (William Brack), exclude-result-prefix bug (William Brack), stylesheet compilation error handling (Rob Richards).
  • Portability fixes: improve build with VS2005 (Rob Richards), fixing build on AIX (Bjorn Wiberg), fix the security file checks on Windows (Roland Schwarz and Rob Richards).
  • Improvement: add an --encoding option to xsltproc (Drazen Kacar).

1.1.21: Jun 12 2007

  • Bug fixes: out of memory allocation errors (William Brack), namespace problem on compound predicates (William Brack), python space/tab inconsistencies (Andreas Hanke), hook xsl:message to per transformation error callbacks (Shaun McCance), cached RVT problem (William Brack), XPath context maintainance on choose (William Brack), memory leaks in the math module (William Brack), exclude-result-prefix induced namespace problem (William Brack)
  • Build: configure setup for TRIO_REPLACE_STDIO (William Brack)
  • Documentation: updated after change from CVs to SVN (William Brack)

1.1.20: Jan 17 2007

  • Portability fixes: strict aliasing fix (Marcus Meissner), BSD portability patches (Roland Illig)
  • Bug fixes: Result Value Tree handling fix (William Brack), function parameters fix (William), uninitialized variable (Kjartan Maraas), empty text node handling (William), plugin support and test fixes (William), fragment support fixes (William)
  • Improvements: python stylesheet compare and transform context access (Nic Ferrier), EXSLT string replace support (Joel Reed), xsltproc better low level error handling (Mike Hommey and William)

1.1.19: Nov 29 2006

  • Bug fixes: entities within attributes (William Brack), Python detection problem (Joseph Sacco), in-scope namespace bug (Mike Hommey), Result value tree caching bug (William Brack)

1.1.18: Oct 26 2006

  • portability and build fixes: DESTDIR problem, build paths in python shared lib, compile when libxml2 doesn't support XInclude (Gary Coady).
  • bug fixes: a number of namespace related bugs (Kasimier Buchcik), parameters bugs (Kasimier Buchcik), proximity position in predicates of match patterns (Kasimier), exslt-node-set troubles with strings (Kasimier), CDATA serialization, Python floats and booleans XPath conversions, XInclude support fixes, RVT cleanup problem (William Brack and Kasimier), attribute checking in stylesheets (Kasimier), xsltForEach context problem (Kasimier), security check should pass full URLs (Shane Corgatelli), security cleanup patch (Mikhail Zabaluev), some python accessor for stylesheet were broken, memory errors when compiling stylesheets (Mike Hommey), EXSLT current date end-of-month problem (William Brack).
  • improvements: refactoring of namespace handling, value-of impleemntation and template internal processing (Kasimier Buchcik), new xsltproc flag to apply Xinclude to stylesheets.
  • documentation: xsltproc man pages (Daniel Leidert), tests updates (William Brack), various typo fixes (Daniel Leidert), comments on versions macros (Peter Breitenlohner).

1.1.17: Jun 6 2006

  • portability fixes: python detection
  • bug fixes: some regression tests, attribute/namespaces output (Kasimier Buchcik), problem in mixed xsl:value-of and xsl:text uses (Kasimier)
  • improvements: internal refactoring (Kasimier Buchcik), use of the XPath object cache in libxml2-2.6.25 (Kasimier)

1.1.16: May 01 2006

  • portability fixes: EXSLT date/time on Solaris and IRIX (Albert Chin), HP-UX build (Albert Chin),
  • build fixes: Python detection(Joseph Sacco), plugin configurei (Joel Reed)
  • bug fixes: pattern compilation fix(William Brack), EXSLT date/time fix (Thomas Broyer), EXSLT function bug, potential loop on variable eval, startup race (Christopher Palmer), debug statement left in python (Nic Ferrier), various cleanup based on Coverity reports), error on Out of memory condition (Charles Hardin), various namespace prefixes fixes (Kasimier Buchcik),
  • improvement: speed up sortingi, start of internals refactoring (Kasimier Buchcik)
  • documentation: man page fixes and updates (Daniel Leidert)

1.1.15: Sep 04 2005

  • build fixes: Windows build cleanups and updates (Igor Zlatkovic), remove jhbuild warnings
  • bug fixes: negative number formatting (William Brack), number formatting per mille definition (William Brack), XInclude default values (William), text copy bugs (William), bug related to xmlXPathContext size, reuse libxml2 memory management for text nodes, dictionary text bug, forbid variables in match (needs libxml2-2.6.21)
  • improvements: EXSLT dyn:map (Mark Vakoc),
  • documentation: EXSLT date and time functions namespace in man (Jonathan Wakely)

1.1.14: Apr 02 2005

  • bug fixes: text node on stylesheet document without a dictionary (William Brack), more checking of XSLT syntax, calling xsltInit() multiple times, mode values interning raised by Mark Vakoc, bug in pattern matching with ancestors, bug in patterna matching with cascading select, xinclude and document() problem, build outside of source tree (Mike Castle)
  • improvement: added a --nodict mode to xsltproc to check problems for docuemtns without dictionaries

1.1.13: Mar 13 2005

  • build fixes: 64bits cleanup (William Brack), python 2.4 test (William), LIBXSLT_VERSION_EXTRA on Windows (William), Windows makefiles fixes (Joel Reed), libgcrypt-devel requires for RPM spec.
  • bug fixes: exslt day-of-week-in-month (Sal Paradise), xsl:call-template should not change the current template rule (William Brack), evaluation of global variables (William Brack), RVT's in XPath predicates (William), namespace URI on template names (Mark Vakoc), stat() for Windows patch (Aleksey Gurtovoy), pattern expression fixes (William Brack), out of memory detection misses (William), parserOptions propagation (William), exclude-result-prefixes fix (William), // patten fix (William).
  • extensions: module support (Joel Reed), dictionary based speedups trying to get rid of xmlStrEqual as much as possible.
  • documentation: added Wiki (Joel Reed)

1.1.12: Oct 29 2004

  • build fixes: warnings removal (William).
  • bug fixes: attribute document pointer fix (Mark Vakoc), exslt date negative periods (William Brack), generated tree structure fixes, namespace lookup fix, use reentrant gmtime_r (William Brack), exslt:funtion namespace fix (William), potential NULL pointer reference (Dennis Dams, William), force string interning on generated documents.
  • documentation: update of the second tutorial (Panagiotis Louridas), add exslt doc in rpm packages, fix the xsltproc man page.

1.1.11: Sep 29 2004

  • bug fixes: xsl:include problems (William Brack), UTF8 number pattern (William), date-time validation (William), namespace fix (William), various Exslt date fixes (William), error callback fixes, leak with namespaced global variable, attempt to fix a weird problem #153137
  • improvements: exslt:date-sum tests (Derek Poon)
  • documentation: second tutorial by Panagiotis Lourida

1.1.10: Aug 31 2004

  • build fix: NUL in c file blocking compilation on Solaris, Windows build (Igor Zlatkovic)
  • fix: key initialization problem (William Brack)
  • documentation: fixed missing man page description for --path

1.1.9: Aug 22 2004

  • build fixes: missing tests (William Brack), Python dependancies, Python on 64bits boxes, --with-crypto flag (Rob Richards),
  • fixes: RVT key handling (William), Python binding (William and Sitsofe Wheeler), key and XPath troubles (William), template priority on imports (William), str:tokenize with empty strings (William), #default namespace alias behaviour (William), doc ordering missing for main document (William), 64bit bug (Andreas Schwab)
  • improvements: EXSLT date:sum added (Joel Reed), hook for document loading for David Hyatt, xsltproc --nodtdattr to avoid defaulting DTD attributes, extend xsltproc --version with CVS stamp (William).
  • Documentation: web page problem reported by Oliver Stoeneberg

1.1.8: July 5 2004

  • build fixes: Windows runtime options (Oliver Stoeneberg), Windows binary package layout (Igor Zlatkovic), libgcrypt version test and link (William)
  • documentation: fix libxslt namespace name in doc (William)
  • bug fixes: undefined namespace message (William Brack), search engine (William), multiple namespace fixups (William), namespace fix for key evaluation (William), Python memory debug bindings,
  • improvements: crypto extensions for exslt (Joel Reed, William)

1.1.7: May 17 2004

  • build fix: warning about localtime_r on Solaris
  • bug fix: UTF8 string tokenize (William Brack), subtle memory corruption, linefeed after comment at document level (William), disable-output-escaping problem (William), pattern compilation in deep imported stylesheets (William), namespace extension prefix bug, libxslt.m4 bug (Edward Rudd), namespace lookup for attribute, namespaced DOCTYPE name

1.1.6: Apr 18 2004

  • 2 bug fixes about keys fixed one by Mark Vakoc

1.1.5: Mar 23 2004

  • performance: use dictionary lookup for variables
  • remove use of _private from source documents
  • cleanup of "make tests" output
  • bugfixes: AVT in local variables, use localtime_r to avoid thread troubles (William), dictionary handling bug (William), limited number of stubstitutions in AVT (William), tokenize fix for UTF-8 (William), superfluous namespace (William), xsltproc error code on <xsl:message> halt, OpenVMS fix, dictionary reference counting change.

1.1.4: Feb 23 2004

  • bugfixes: attributes without doc (Mariano Surez-Alvarez), problem with Yelp, extension problem
  • display extension modules (Steve Little)
  • Windows compilation patch (Mark Vadoc), Mingw (Mikhail Grushinskiy)

1.1.3: Feb 16 2004

  • Rewrote the Attribute Value Template code, new XPath compilation interfaces, dictionary reuses for XSLT with potential for serious performance improvements.
  • bug fixes: portability (William Brack), key() in node-set() results (William), comment before doctype (William), math and node-set() problems (William), cdata element and default namespace (William), behaviour on unknown XSLT elements (Stefan Kost), priority of "//foo" patterns (William), xsl:element and xsl:attribute QName check (William), comments with -- (William), attribute namespace (William), check for ?> in PI (William)
  • Documentations: cleanup (John Fleck and William)
  • Python: patch for OS-X (Gianni Ceccarelli), enums export (Stephane bidoul)

1.1.2: Dec 24 2003

  • Documentation fixes (John Fleck, William Brack), EXSLT documentation (William Brack)
  • Windows compilation fixes for MSVC and Mingw (Igor Zlatkovic)
  • Bug fixes: exslt:date returning NULL strings (William Brack), namespaces output (William Brack), key and namespace definition problem, passing options down to the document() parser, xsl:number fixes (William Brack)

1.1.1: Dec 10 2003

  • code cleanup (William Brack)
  • Windows: Makefile improvements (Igor Zlatkovic)
  • documentation improvements: William Brack, libexslt man page (Jonathan Wakely)
  • param in EXSLT functions (Shaun McCance)
  • XSLT debugging improvements (Mark Vakoc)
  • bug fixes: number formatting (Bjorn Reese), exslt:tokenize (William Brack), key selector parsing with | reported by Oleg Paraschenko, xsl:element with computed namespaces (William Brack), xslt:import/include recursion detection (William Brack), exslt:function used in keys (William Brack), bug when CDATA_SECTION are foun in the tree (William Brack), entities handling when using XInclude.

1.1.0: Nov 4 2003

  • Removed DocBook SGML broken support
  • fix xsl:key to work with PIs
  • Makefile and build improvement (Graham Wilson), build cleanup (William Brack), macro fix (Justin Fletcher), build outside of source tree (Roumen Petrov)
  • xsltproc option display fix (Alexey Efimov), --load-trace (Crutcher Dunnavant)
  • Python: never use stdout for error
  • extension memory error fix (Karl Eichwalder)
  • header path fixes (Steve Ball)
  • added saxon:line-number() to libexslt (Brett Kail)
  • Fix some tortuous template problems when using predicates (William Brack)
  • Debugger status patch (Kasimier Buchcik)
  • Use new libxml2-2.6.x APIs for faster processing
  • Make sure xsl:sort is empty
  • Fixed a bug in default processing of attributes
  • Removes the deprecated breakpoint library
  • detect invalid names on templates (William Brack)
  • fix exslt:document (and similar) base handling problem

1.0.33: Sep 12 2003

This is a bugfix only release

  • error message missing argument (William Brack)
  • mode not cascaded in template fallbacks (William Brack)
  • catch redefinition of parameter/variables (William Brack)
  • multiple keys with same namespace name (William Brack)
  • patch for compilation using MingW on Windows (Mikhail Grushinskiy)
  • header export macros for Windows (Igor Zlatkovic)
  • cdata-section-elements handling of namespaced names
  • compilation without libxml2 XPointer support (Mark Vadoc)
  • apply-templates crash (William Brack)
  • bug with imported templates (William Brack)
  • imported attribute-sets merging bug (DocBook) (William Brack)

1.0.32: Aug 9 2003

  • bugfixes: xsltSaveResultToFile() python binding (Chris Jaeger), EXSLT function (William Brack), RVT for globals (William Brack), EXSLT date (William Brack),

    speed of large text output, xsl:copy with attributes, strip-space and namespaces prefix, fix for --path xsltproc option, EXST:tokenize (Shaun McCance), EXSLT:seconds (William Brack), sort with multiple keys (William Brack), checking of { and } for attribute value templates (William Brack)

  • Python bindings for extension elements (Sean Treadway)
  • EXSLT:split added (Shaun McCance)
  • portability fixes for HP-UX/Solaris/IRIX (William Brack)
  • doc cleanup

1.0.31: Jul 6 2003

  • bugfixes: xsl:copy on namespace nodes, AVT for xsl:sort order, fix for the debugger (Keith Isdale), output filename limitation, trio.h and triodef.h added (Albert Chin), EXSLT node-set (Peter Breitenlohner), xsltChoose and whitespace (Igor Zlatkovic),

    stylesheet compilation (Igor Zlatkovic), NaN and sort (William Brack), RVT bug introduced in 1.0.30

  • avoid generating &quot; (fix in libxml2-2.5.8)
  • fix 64bit cleaness problem and compilation troubles introduced in 1.0.30
  • Windows makefile generation (Igor Zlatkovic)
  • HP-UX portability fix

1.0.30: May 4 2003

  • Fixes and new APIs to handle Result Value Trees and avoid leaks
  • Fixes for: EXSLT math pow() function (Charles Bozeman), global parameter and global variables mismatch, a segfault on pattern compilation errors, namespace copy in xsl:copy-of, python generator problem, OpenVMS trio update, premature call to xsltFreeStackElem (Igor), current node when templates applies to attributes

1.0.29: Apr 1 2003

  • performance improvements especially for large flat documents
  • bug fixes: Result Value Tree handling, XML IDs, keys(), extra namespace declarations with xsl:elements.
  • portability: python and trio fixes (Albert Chin), python on Solaris (Ben Phillips)

1.0.28: Mar 24 2003

  • fixed node() in patterns semantic.
  • fixed a memory access problem in format-number()
  • fixed stack overflow in recursive global variable or params
  • cleaned up Result Value Tree handling, and fixed a couple of old bugs in the process

1.0.27: Feb 24 2003

  • bug fixes: spurious xmlns:nsX="" generation, serialization bug (in libxml2), a namespace copy problem, errors in the RPM spec prereqs
  • Windows path canonicalization and document cache fix (Igor)

1.0.26: Feb 10 2003

  • Fixed 3 serious bugs in document() and stylesheet compilation which could lead to a crash

1.0.25: Feb 5 2003

  • Bug fix: double-free for standalone stylesheets introduced in 1.0.24, C syntax pbm, 3 bugs reported by Eric van der Vlist
  • Some XPath and XInclude related problems were actually fixed in libxml2-2.5.2
  • Documentation: emphasize taht --docbook is not for XML docs.

1.0.24: Jan 14 2003

  • bug fixes: imported global varables, python bindings (Stphane Bidoul), EXSLT memory leak (Charles Bozeman), namespace generation on xsl:attribute, space handling with imports (Daniel Stodden), extension-element-prefixes (Josh Parsons), comments within xsl:text (Matt Sergeant), superfluous xmlns generation, XInclude related bug for numbering, EXSLT strings (Alexey Efimov), attribute-sets computation on imports, extension module init and shutdown callbacks not called
  • HP-UX portability (Alexey Efimov), Windows makefiles (Igor and Stephane Bidoul), VMS makefile updates (Craig A. Berry)
  • adds xsltGetProfileInformation() (Michael Rothwell)
  • fix the API generation scripts
  • API to provide the sorting routines (Richard Jinks)
  • added XML description of the EXSLT API
  • added ESXLT URI (un)escaping (Jrg Walter)
  • Some memory leaks have been found and fixed
  • document() now support fragment identifiers in URIs

1.0.23: Nov 17 2002

  • Windows build cleanup (Igor)
  • Unix build and RPM packaging cleanup
  • Improvement of the python bindings: extension functions and activating EXSLT
  • various bug fixes: number formatting, portability for bounded string functions, CData nodes, key(), @*[...] patterns
  • Documentation improvements (John Fleck)
  • added libxslt.m4 (Thomas Schraitle)

1.0.22: Oct 18 2002

  • Updates on the Windows Makefiles
  • Added a security module, and a related set of new options to xsltproc
  • Allowed per transformation error handler.
  • Fixed a few bugs: node() semantic, URI escaping, media-type, attribute lists

1.0.21: Sep 26 2002

  • Bug fixes: match="node()", date:difference() (Igor and Charlie Bozeman), disable-output-escaping
  • Python bindings: style.saveResultToString() from Ralf Mattes
  • Logos from Marc Liyanage
  • Mem leak fix from Nathan Myers
  • Makefile: DESTDIR fix from Christophe Merlet, AMD x86_64 (Mandrake), Windows (Igor), Python detection
  • Documentation improvements: John Fleck

1.0.20: Aug 23 2002

  • Windows makefile updates (Igor) and x86-64 (Frederic Crozat)
  • fixed HTML meta tag saving for Mac/IE users
  • possible leak patches from Nathan Myers
  • try to handle document('') as best as possible depending in the cases
  • Fixed the DocBook stylesheets handling problem
  • Fixed a few XSLT reported errors

1.0.19: July 6 2002

  • EXSLT: dynamic functions and date support bug fixes (Mark Vakoc)
  • xsl:number fix: Richard Jinks
  • xsl:format-numbers fix: Ken Neighbors
  • document('') fix: bug pointed by Eric van der Vlist
  • xsl:message with terminate="yes" fixes: William Brack
  • xsl:sort order support added: Ken Neighbors
  • a few other bug fixes, some of them requiring the latest version of libxml2

1.0.18: May 27 2002

  • a number of bug fixes: attributes, extra namespace declarations (DocBook), xsl:include crash (Igor), documentation (Christian Cornelssen, Charles Bozeman and Geert Kloosterman), element-available (Richard Jinks)
  • xsltproc can now list teh registered extensions thanks to Mark Vakoc
  • there is a new API to save directly to a string xsltSaveResultToString() by Morus Walter
  • specific error registration function for the python API

1.0.17: April 29 2002

  • cleanup in code, XSLT debugger support and Makefiles for Windows by Igor
  • a C++ portability fix by Mark Vakoc
  • EXSLT date improvement and regression tests by Charles Bozeman
  • attempt to fix a bug in xsltProcessUserParamInternal

1.0.16: April 15 2002

  • Bug fixes: strip-space, URL in HTML output, error when xsltproc can't save
  • portability fixes: OSF/1, IEEE on alphas, Windows, Python bindings

1.0.15: Mar 25 2002

  • Bugfixes: XPath, python Makefile, recursive attribute sets, @foo[..] templates
  • Debug of memory alocation with valgind
  • serious profiling leading to significant improvement for DocBook processing
  • revamp of the Windows build

1.0.14: Mar 18 2002

  • Improvement in the XPath engine (libxml2-2.4.18)
  • Nasty bug fix related to exslt:node-set
  • Fixed the python Makefiles, cleanup of doc comments, Windows portability fixes

1.0.13: Mar 8 2002

  • a number of bug fixes including "namespace node have no parents"
  • Improvement of the Python bindings
  • Charles Bozeman provided fixes and regression tests for exslt date functions.

1.0.12: Feb 11 2002

  • Fixed the makefiles especially the python module ones
  • half a dozen bugs fixes including 2 old ones

1.0.11: Feb 8 2002

  • Change of Licence to the MIT Licence
  • Added a beta version of the Python bindings, including support to extend the engine with functions written in Python
  • A number of bug fixes
  • Charlie Bozeman provided more EXSLT functions
  • Portability fixes

1.0.10: Jan 14 2002

  • Windows fixes for Win32 from Igor
  • Fixed the Solaris compilation trouble (Albert)
  • Documentation changes and updates: John Fleck
  • Added a stringparam option to avoid escaping hell at the shell level
  • A few bug fixes

1.0.9: Dec 7 2001

  • Makefile patches from Peter Williams
  • attempt to fix the compilation problem associated to prelinking
  • obsoleted libxsltbreakpoint now deprecated and frozen to 1.0.8 API
  • xsltproc return codes are now significant, John Fleck updated the documentation
  • patch to allow as much as 40 steps in patterns (Marc Tardif), should be made dynamic really
  • fixed a bug raised by Nik Clayton when using doctypes with HTML output
  • patches from Keith Isdale to interface with xsltdebugger

1.0.8: Nov 26 2001

  • fixed an annoying header problem, removed a few bugs and some code cleanup
  • patches for Windows and update of Windows Makefiles by Igor
  • OpenVMS port instructions from John A Fotheringham
  • fixed some Makefiles annoyance and libraries prelinking information

1.0.7: Nov 10 2001

  • remove a compilation problem with LIBXSLT_PUBLIC
  • Finishing the integration steps for Keith Isdale debugger
  • fixes the handling of indent="no" on HTML output
  • fixes on the configure script and RPM spec file

1.0.6: Oct 30 2001

  • bug fixes on number formatting (Thomas), date/time functions (Bruce Miller)
  • update of the Windows Makefiles (Igor)
  • fixed DOCTYPE generation rules for HTML output (me)

1.0.5: Oct 10 2001

  • some portability fixes, including Windows makefile updates from Igor
  • fixed a dozen bugs on XSLT and EXSLT (me and Thomas Broyer)
  • support for Saxon's evaluate and expressions extensions added (initial contribution from Darren Graves)
  • better handling of XPath evaluation errors

1.0.4: Sep 12 2001

  • Documentation updates from John fleck
  • bug fixes (DocBook FO generation should be fixed) and portability improvements
  • Thomas Broyer improved the existing EXSLT support and added String, Time and Date core functions support

1.0.3: Aug 23 2001

  • XML Catalog support see the doc
  • New NaN/Infinity floating point code
  • A few bug fixes

1.0.2: Aug 15 2001

  • lot of bug fixes, increased the testsuite
  • a large chunk of EXSLT is implemented
  • improvements on the extension framework
  • documentation improvements
  • Windows MSC projects files should be up-to-date
  • handle attributes inherited from the DTD by default

1.0.1: July 24 2001

  • initial EXSLT framework
  • better error reporting
  • fixed the profiler on Windows
  • bug fixes

1.0.0: July 10 2001

  • a lot of cleanup, a lot of regression tests added or fixed
  • added a documentation for writing extensions
  • fixed some variable evaluation problems (with William)
  • added profiling of stylesheet execution accessible as the xsltproc --profile option
  • fixed element-available() and the implementation of the various chunking methods present, Norm Walsh provided a lot of feedback
  • exclude-result-prefixes and namespaces output should now work as expected
  • added support of embedded stylesheet as described in section 2.7 of the spec

0.14.0: July 5 2001

  • lot of bug fixes, and code cleanup
  • completion of the little XSLT-1.0 features left unimplemented
  • Added and implemented the extension API suggested by Thomas Broyer
  • the Windows MSC environment should be complete
  • tested and optimized with a really large document (DocBook Definitive Guide) libxml/libxslt should really be faster on serious workloads

0.13.0: June 26 2001

  • lots of cleanups
  • fixed a C++ compilation problem
  • couple of fixes to xsltSaveTo()
  • try to fix Docbook-xslt-1.4 and chunking, updated the regression test with them
  • fixed pattern compilation and priorities problems
  • Patches for Windows and MSC project mostly contributed by Yon Derek
  • update to the Tutorial by John Fleck
  • William fixed bugs in templates and for-each functions
  • added a new interface xsltRunStylesheet() for a more flexible output (incomplete), added -o option to xsltproc

0.12.0: June 18 2001

  • fixed a dozen of bugs reported
  • HTML generation should be quite better (requires libxml-2.3.11 upgrade too)
  • William fixed some problems with document()
  • Fix namespace nodes selection and copy (requires libxml-2.3.11 upgrade too)
  • John Fleck added a tutorial
  • Fixes for namespace handling when evaluating variables
  • XInclude global flag added to process XInclude on document() if requested
  • made xsltproc --version more detailed

0.11.0: June 1 2001

Mostly a bug fix release.

  • integration of catalogs from xsltproc
  • added --version to xsltproc for bug reporting
  • fixed errors when handling ID in external parsed entities
  • document() should hopefully work correctly but ...
  • fixed bug with PI and comments processing
  • William fixed the XPath string functions when using unicode

0.10.0: May 19 2001

  • cleanups to make stylesheet read-only (not 100% complete)
  • fixed URI resolution in document()
  • force all XPath expression to be compiled at stylesheet parsing time, even if unused ...
  • Fixed HTML default output detection
  • Fixed double attribute generation #54446
  • Fixed {{ handling in attributes #54451
  • More tests and speedups for DocBook document transformations
  • Fixed a really bad race like bug in xsltCopyTreeList()
  • added a documentation on the libxslt internals
  • William Brack and Bjorn Reese improved format-number()
  • Fixed multiple sort, it should really work now
  • added a --docbook option for SGML DocBook input (hackish)
  • a number of other bug fixes and regression test added as people were submitting them

0.9.0: May 3 2001

  • lot of various bugfixes, extended the regression suite
  • xsltproc should work with multiple params
  • added an option to use xsltproc with HTML input
  • improved the stylesheet compilation, processing of complex stylesheets should be faster
  • using the same stylesheet for concurrent processing on multithreaded programs should work now
  • fixed another batch of namespace handling problems
  • Implemented multiple level of sorting

0.8.0: Apr 22 2001

  • fixed ansidecl.h problem
  • fixed unparsed-entity-uri() and generate-id()
  • sort semantic fixes and priority prob from William M. Brack
  • fixed namespace handling problems in XPath expression computations (requires libxml-2.3.7)
  • fixes to current() and key()
  • other, smaller fixes, lots of testing with N Walsh DocBook HTML stylesheets

0.7.0: Apr 10 2001

  • cleanup using stricter compiler flags
  • command line parameter passing
  • fix to xsltApplyTemplates from William M. Brack
  • added the XSLTMark in the regression tests as well as document()

0.6.0: Mar 22 2001

  • another beta
  • requires 2.3.5, which provide XPath expression compilation support
  • document() extension should function properly
  • fixed a number or reported bugs

0.5.0: Mar 10 2001

  • fifth beta
  • some optimization work, for the moment 2 XSLT transform cannot use the same stylesheet at the same time (to be fixed)
  • fixed problems with handling of tree results
  • fixed a reported strip-spaces problem
  • added more reported/fixed bugs to the test suite
  • incorporated William M. Brack fix for imports and global variables as well as patch for with-param support in apply-templates
  • a bug fix on for-each

0.4.0: Mar 1 2001

  • fourth beta test, released at the same time of libxml2-2.3.3
  • bug fixes
  • some optimization
  • started implement extension support, not finished
  • implemented but not tested multiple file output

0.3.0: Feb 24 2001

  • third beta test, released at the same time of libxml2-2.3.2
  • lot of bug fixes
  • some optimization
  • added DocBook XSL based testsuite

0.2.0: Feb 15 2001

  • second beta version, released at the same time as libxml2-2.3.1
  • getting close to feature completion, lot of bug fixes, some in the HTML and XPath support of libxml
  • start becoming usable for real work. This version can now regenerate the XML 2e HTML from the original XML sources and the associated stylesheets (in section I of the XML REC)
  • Still misses extension element/function/prefixes support. Support of key() and document() is not complete

0.1.0: Feb 8 2001

  • first beta version, released at the same time as libxml2-2.3.0
  • lots of bug fixes, first "testing" version, but incomplete

0.0.1: Jan 25 2001

  • first alpha version released at the same time as libxml2-2.2.12
  • Framework in place, should work on simple examples, but far from being feature complete

Daniel Veillard

PK|0]qeo0o0 bugs.htmlnu[ Reporting bugs and getting help
Action against software patentsGNOME2 LogoW3C logoRed Hat Logo
Made with Libxslt Logo

The XSLT C library for GNOME

Reporting bugs and getting help

Main Menu
Related links
API Indexes

If you need help with the XSLT language itself, here are a number of useful resources:

Well, bugs or missing features are always possible, and I will make a point of fixing them in a timely fashion. The best way to report a bug is to use the GNOME bug tracking database (make sure to use the "libxslt" module name). Before filing a bug, check the list of existing libxslt bugs to make sure it hasn't already been filed. I look at reports there regularly and it's good to have a reminder when a bug is still open. Be sure to specify that the bug is for the package libxslt.

For small problems you can try to get help on IRC, the #xml channel on irc.gnome.org (port 6667) usually have a few person subscribed which may help (but there is no guarantee and if a real issue is raised it should go on the mailing-list for archival).

There is also a mailing-list xslt@gnome.org for libxslt, with an on-line archive. To subscribe to this list, please visit the associated Web page and follow the instructions.

Alternatively, you can just send the bug to the xslt@gnome.org list, if it's really libxslt related I will approve it.. Please do not send me mail directly especially for portability problem, it makes things really harder to track and in some cases I'm not the best person to answer a given question, ask the list instead. Do not send code, I won't debug it (but patches are really appreciated!).

Please note that with the current amount of virus and SPAM, sending mail to the list without being subscribed won't work. There is *far too many bounces* (in the order of a thousand a day !) I cannot approve them manually anymore. If your mail to the list bounced waiting for administrator approval, it is LOST ! Repost it and fix the problem triggering the error. Also please note that emails with a legal warning asking to not copy or redistribute freely the information they contain are NOT acceptable for the mailing-list, such mail will as much as possible be discarded automatically, and are less likely to be answered if they made it to the list, DO NOT post to the list from an email address where such legal requirements are automatically added, get private paying support if you can't share information.

Check the following too before posting:

  • use the search engine to get information related to your problem.
  • make sure you are using a recent version, and that the problem still shows up in those
  • check the list archives to see if the problem was reported already, in this case there is probably a fix available, similarly check the registered open bugs
  • make sure you can reproduce the bug with xsltproc, a very useful thing to do is run the transformation with -v argument and redirect the standard error to a file, then search in this file for the transformation logs just preceding the possible problem
  • Please send the command showing the error as well as the input and stylesheet (as an attachment)

Then send the bug with associated information to reproduce it to the xslt@gnome.org list; if it's really libxslt related I will approve it. Please do not send mail to me directly, it makes things really hard to track and in some cases I am not the best person to answer a given question, ask on the list.

To be really clear about support:

  • Support or help request MUST be sent to the list or on bugzilla in case of problems, so that the Question and Answers can be shared publicly. Failing to do so carries the implicit message "I want free support but I don't want to share the benefits with others" and is not welcome. I will automatically Carbon-Copy the xslt@gnome.org mailing list for any technical reply made about libxml2 or libxslt.
  • There is no guarantee for support, if your question remains unanswered after a week, repost it, making sure you gave all the detail needed and the information requested.
  • Failing to provide information as requested or double checking first for prior feedback also carries the implicit message "the time of the library maintainers is less valuable than my time" and might not be welcome.

Of course, bugs reports with a suggested patch for fixing them will probably be processed faster.

If you're looking for help, a quick look at the list archive may actually provide the answer, I usually send source samples when answering libxslt usage questions. The auto-generated documentation is not as polished as I would like (I need to learn more about Docbook), but it's a good starting point.

Daniel Veillard

PK|0]+*+*duck.pngnu[PNG  IHDRo?H pHYsttfxtIME ( ctEXtAuthorH tEXtDescription !# tEXtCopyright:tEXtCreation time5 tEXtSoftware]p: tEXtDisclaimertEXtWarningtEXtSourcetEXtComment̖tEXtTitle'IDATx}PSgҔBlRў ƓȖ֍׵KΚe};ޙ[ew2;}q;}udn_2v\qiC(bTSyx 3 s<끛w1$D"QGdj#պjժUVYns="www}yk#BHn޼ w10mjZl6˲&l6UUUiʜ fIDATHfs}}=@ lM',=KRS7,9E4s8C7L/$†MݱAGn˷{,J[tt3X~LiR$LrN7|D"OTs;QYYYZVF^ΰDϟyvf||I[ S gKVefYQc ޙTCNFQJ07< xshTVV٬֙AG[IDAT`>iG!A>zDB۱bDM{ ffi4 3 Qpi{,Myz<1/BcdK&8Ebr er;"Nk&|r˸,ZN~w_#/ff-|qR Eϟy6x:Z@^m:Dw`Y6B]cr I~&tR*H烴AA~W]?lJNRE#q&)!ښJ-2lN#O`?B!(}F_}ʤxu_GAR)j/.]ǔP  YOeIDATAw0xFUJ6 IJ@gMs2ŇVԔh|h],ou-'a Y D?1(9 (c 47 \?[6o *8h?ƫE\'LR();Z:9%|/ҬACtp ㉎8bڅuLƆM_\$Hh21;:2]<RT*y}_ÁR* =s\{F|hNo(6hU!~IDAT:\BRJEl/rezR*'rW4+{Wp9ֺ~Ǔ2jXL@+yím>EgĻ_Džn#D⡐) aBfK\. L|Z@_>snѮSYgO)4S(kipqF fO& Bhm9+-+C:!Fe].Wo_B<%|IDATvCr\`6(`qZ-$N8t vŲ,˲ O55`I²!3'OBH^,{H<l,,Ft3jD+8|XĜIluJ{[ۯ֯Os fBb_ݹs8;w\H,NF'bxiYYZͲl]]D186WFs~_*N4͔ G0naś~Z\.z}uuuYY/{RB*K//y^,]6ڗ:/8{6%%#/~񋁁Cvhٳjŋ`%KDhetw/:;9Lj8NWAB#x{^{-K.gYfMp|lVdjlldh}t&ozErr,IDATj~}}Whok;]]]dXii)#>߈gr\iii #GjRr˲ ÜQ566H$~\vd2%0*U{[[FF?~<##PMM Ǐ|ĄJ';IDATi" vر7kkBQvu۹Ve2mkɇ_-IFǧ3G+v8JUTT޾g۷wuuU @F%X%=eǏC+2FKN9dphRH$Fwptuu%t:)d|᧟jjr\"kXeT*'1=I4Miiigg'T*D"q(<@ 84\.CRtV^~dnbn@ݎi&)LnG"SIDAT87kk#K`ш/tD#pJq^ )xۋGcc#HP{[f3 2 n'kRA oeZro"1hp݃/^xwC+V,{|zavYѳNLLGVTYry\0{B~J_d5z=VH+ĒbIDAT bll =V6,P3C`ٰ*J2t\8HI|TSFGGo޼jH$w@< wH<߬RPGoO fdd۽}}BIDATݡ.Lv$D~\ڄ 0RNE ?NXXh0\%]b Ml6,`kB<|g::CNr04%@UUN555$t#!YFV^VSy~VkZc kUU˲yyy6-FnK6:w0a 䰜? xdدfҶsPKxw{,˚nM*Ddنwyg``oRi[Mzzz~Q*ziwxjavX$A83e>WIDATP]xT*밢h4|}L)$0_nڵߕJ†^? 34T`0fROjxh4nڴW_]|9!Z83 'SO?*#Q*yR5֭[ x \'%0KpZu7D{Tɧ}}D}y[c[]w/P*(lV+] ^}}}kkFzIDATgnl/9YCL\ĉVWTTN1ȉ \^iIDATi$榎555]׮]q7$r?^zUB! ʊ0%%)"IS*YwxUw؁xq P+JTTTG㸖fV{rttt0,ZhѢE7nܸ&\Ja#J#E$"?t$X OF# w Hzn]'s#IDAT?{܅cnA0<~8F‚aBnfxH^tN`8(&0lDI%H$8… W奦}ƒƪ|K |yK&M6 8[Z穧F)qb4ߐc01ubVf惷w-[ !,]se˗L&KIIH3wH!)xQ98}}|##N\.M(IDATgY}~o_X,徑kJ۱\.[nݒK!!1XԾe˖;s9l6R=z5-u~ZZ$*mzcIDATLjcT=Cje]$͡uݺu8[sNyCEEEg::>cd20}r'WfB?+)njz hJD< /NHl֭whH \HMM]vĕ+CH,NMMGGGgfޟP(Vj4˗/odrj\.}##@?jy睷z ===FԩS&2VW_effN)7, JIDATxhN',1лq GB4N;TZVfޭ-/))9|Z?}}[ls1c@0 k#Ntۖ-[Z ##w2Ar6w')G# {$ ,|O`Ht:~ccjv' ebq}}=fxxwxٳzw_z饁L)nqGDb1644OIDAT~YrymHxλ#$pˍTGVVVhܻi%IM L=wO9_yRSSEb1=<WdM[1/ z,]su B ˪ccg::OK[dIjjPssK"o/|O1ODA'IDAT1Ap+130/==RzzL&[hѹP}hbB 7t <"#:C(Ӫh^OCjg;`8tEڼuthdom%Xq>Cr-ho߾}'94'qa ,;N6 {` IA?)1!hEETwFIDATRWwxIO 9fںfi4nd2G|>:qod2Z-ش#֣Ll6T)I\Y,P9 zw ?=ZYY1zŨTkm,ˮ].יFǃcccts DRYYIXfD"ge`Z%Fmms.p5$cͺ:iio_ߙdP4̳P0~vZZCCCu1n#[[[y>t_H,a!hC6dohaD}҂|C$TH3 St K[T$Ag^>na͖F'=p8p#w:+TÃQIDAT$8 6f$ PHy[!Á aQPeH0t &/ֿoHv"mIKT-t9ٳ{7i $ƌ}爻! API Alphabetic Index q-s for libxslt
Action against software patentsGNOME2 LogoW3C logoRed Hat Logo
Made with Libxslt Logo

The XSLT C library for GNOME

API Alphabetic Index q-s for libxslt

Main Menu
Related links
API Indexes

A-I J-R S-a b-c d-e f-g h-i j-m n-o p-p q-s t-u v-x y-z

Letter q:

query
xsltGetKey
quick
IS_XSLT_ATTR_FAST
IS_XSLT_ELEM_FAST
quote
xsltFormatNumberConversion

Letter r:

raise
xsltApplyOneTemplate
rank=
xsltGetProfileInformation
read
xsltCheckRead
xsltRunStylesheet
xsltRunStylesheetUser
read:
_xsltStyleItemDocument
ready
xsltAllocateExtraCtxt
real
IS_XSLT_REAL_NODE
really
XSLT_ITEM_COMPATIBILITY_FIELDS
_xsltEffectiveNs
receives
XSLT_RVT_FUNC_RESULT
record
xsltParseGlobalParam
xsltParseStylesheetOutput
recorded
xsltParseStylesheetCallerParam
recursions
_xsltTransformContext
recursive
_xsltTransformContext
refactored
XSLT_REFACTORED_VARS
_xsltStylesheet
_xsltTemplate
xsltCopyNamespaceList
xsltGetNamespace
xsltInitCtxtKeys
reference
xsltParseStylesheetDoc
references
xsltAttrListTemplateProcess
xsltResolveStylesheetAttributeSet
referencing
xsltLoadStylesheetPI
reflect
XSLT_ITEM_COMPATIBILITY_FIELDS
reflected
xsltParseStylesheetDoc
register
xsltExtensionInstructionResultRegister
xsltNamespaceAlias
registered
xsltDebugDumpExtensions
xsltDocLoaderFunc
xsltFreeRVTs
xsltInitCtxtExts
xsltRegisterExtPrefix
registers
xsltInit
xsltParseGlobalVariable
related
_xsltStylesheet
xsltParseStylesheetOutput
releases
xsltExtensionInstructionResultFinalize
xsltExtensionInstructionResultRegister
remain
xsltLocalVariablePop
remove
xsltParseSequenceConstructor
reorder
xsltComputeSortResult
xsltDefaultSortFunction
xsltDoSortFunction
xsltDocumentSortFunction
replace
xsltGetQNameURI
replacement
_xsltTemplate
report
xsltApplyOneTemplate
reports
_xsltCompilerCtxt
xsltGetSpecialNamespace
represented
xsltFreeStyleDocuments
representing
xsltFreeStyleDocuments
requested
xsltFormatNumberConversion
xsltGetNamespace
xsltGetSpecialNamespace
required
xsltDocLoaderFunc
requirement
xsltComputeSortResult
xsltDefaultSortFunction
xsltDoSortFunction
requires
xsltNeedElemSpaceHandling
reset
XSLT_RVT_FUNC_RESULT
xsltFlagRVTs
xsltSetGenericDebugFunc
xsltSetGenericErrorFunc
xsltSetSortFunc
xsltSetTransformErrorFunc
resets
xsltSetLoaderFunc
resolve
xsltResolveStylesheetAttributeSet
resource
xsltCheckRead
xsltCheckWrite
xsltRunStylesheet
xsltRunStylesheetUser
respect
xsltFindElemSpaceHandling
restored
xsltApplyOneTemplate
restricts
_xsltStylesheet
result-prefix
xsltNamespaceAlias
result-tree
xsltFunctionNodeSet
resulting
_xsltTransformContext
xsltEvalTemplateString
xsltGetKey
xsltLoadStylesheetPI
xsltXPathCompile
xsltXPathCompileFlags
results
XSLT_RVT_FUNC_RESULT
xsltParseTemplateContent
retrieve
xsltXPathGetTransformContext
return
CHECK_STOPPED
CHECK_STOPPED0
XSLT_RVT_FUNC_RESULT
xsltAllocateExtra
xsltAllocateExtraCtxt
xsltAttrTemplateValueProcess
xsltAttrTemplateValueProcessNode
xsltEvalAVT
xsltSplitQName
returned
XSLT_RVT_FUNC_RESULT
xsltExtensionInstructionResultFinalize
xsltFlagRVTs
xsltGetProfileInformation
xsltGetQNameURI
xsltParseStylesheetDoc
returning
xsltFlagRVTs
reuse
xsltApplyOneTemplate
xsltReleaseRVT
rid
_xsltPrincipalStylesheetData
_xsltStylesheet
right
xsltParseStylesheetProcess
root
_xsltCompilerCtxt
_xsltCompilerNodeInfo
xsltApplyStripSpaces
routine
_xsltRuntimeExtra
xsltLocalVariablePush
routines
xsltSetDebuggerCallbacks
rule
xsltFindTemplate
rules
XML_CAST_FPTR
_xsltCompilerCtxt
run
_xsltTransformContext
run-time
xsltAllocateExtraCtxt
xsltCompilePattern
running
xsltSetTransformErrorFunc
runtime
_xsltTransformContext
xsltAllocateExtra
xsltAllocateExtraCtxt
xsltDocLoaderFunc

Letter s:

s390
XML_CAST_FPTR
same
xsltFindTemplate
xsltGetPlainNamespace
xsltGetQNameURI
sane
xsltFindTemplate
saving
xsltSaveProfiling
saxon
xsltFunctionNodeSet
scanner
xsltNormalizeCompSteps
scope
XSLT_RVT_VARIABLE
_xsltKeyDef
_xsltStylePreComp
_xsltStylesheet
xsltApplyOneTemplate
xsltEvalXPathPredicate
xsltFlagRVTs
xsltGetQNameURI
xsltGetTemplate
seaches
xsltGetQNameURI
search
xsltExtElementLookup
section
_xsltStylesheet
security
_xsltTransformContext
xsltCheckRead
xsltCheckWrite
xsltFreeSecurityPrefs
xsltGetDefaultSecurityPrefs
xsltGetSecurityPrefs
xsltNewSecurityPrefs
xsltSecurityAllow
xsltSecurityForbid
xsltSetCtxtSecurityPrefs
xsltSetDefaultSecurityPrefs
xsltSetSecurityPrefs
see
xsltEvalOneUserParam
semantic
xsltGetCNsProp
xsltGetNsProp
separates
xsltFormatNumberConversion
separator
xsltFormatNumberConversion
sequence
_xsltStackElem
xsltApplyOneTemplate
xsltEvalTemplateString
xsltGetUTF8Char
xsltParseSequenceConstructor
set
NODE_IS_KEYED
XSLT_MARK_RES_TREE_FRAG
XSLT_PARSE_OPTIONS
_xsltStylesheet
xsltApplyOneTemplate
xsltCleanupGlobals
xsltComputeSortResult
xsltDefaultSortFunction
xsltDoSortFunction
xsltDocLoaderFunc
xsltDocumentSortFunction
xsltExtensionInstructionResultFinalize
xsltInitCtxtExts
xsltSetCtxtSortFunc
xsltSetDebuggerStatus
xsltShutdownCtxtExts
xsltShutdownExts
sets
_xsltStylesheet
xsltAttrTemplateProcess
xsltFreeAttributeSetsHashes
xsltResolveStylesheetAttributeSet
xsltSetDebuggerStatus
setting
xsltGetQNameURI
xsltSetGenericDebugFunc
xsltSetGenericErrorFunc
shared
_xsltStylesheet
_xsltTransformContext
sheet
_xsltStylesheet
xsltLoadStyleDocument
xsltNewStyleDocument
should
CHECK_STOPPED
CHECK_STOPPED0
CHECK_STOPPEDE
_xsltStylesheet
_xsltTransformContext
xsltCopyTextString
xsltDocumentSortFunction
xsltFindElemSpaceHandling
xsltFreeRVTs
xsltGetProfileInformation
xsltLocalVariablePop
xsltLocalVariablePush
xsltNeedElemSpaceHandling
xsltQuoteUserParams
xsltRegisterExtElement
xsltRegisterExtFunction
xsltSetXIncludeDefault
xsltSort
show
xsltFormatNumberConversion
shows
xsltFormatNumberConversion
shutdown
xsltExtShutdownFunction
xsltFreeLocales
xsltRegisterExtModule
xsltRegisterExtModuleFull
xsltStyleExtShutdownFunction
sibling
XSLT_ITEM_COMPATIBILITY_FIELDS
side
xsltApplyOneTemplate
signalled
xsltGetQNameURI
signature
xsltDocLoaderFunc
similar
xsltGetQNameURI2
simplified
_xsltCompilerCtxt
simply
xsltSetGenericDebugFunc
xsltSetGenericErrorFunc
xsltSetTransformErrorFunc
since
xsltAttrListTemplateProcess
xsltRegisterTmpRVT
xsltRunStylesheet
xsltRunStylesheetUser
xsltTimestamp
single
xsltEvalOneUserParam
xsltQuoteOneUserParam
size
_xsltStylesheet
_xsltTransformContext
xsltPointerListAddSize
xsltPointerListCreate
slightly
xsltGetCNsProp
xsltGetNsProp
slot
xsltAllocateExtra
xsltAllocateExtraCtxt
slow
xsltDocumentSortFunction
some
xsltCheckWrite
xsltCompileAttr
something
xsltParseStylesheetProcess
sorted
_xsltTemplate
sorting
xsltComputeSortResult
xsltDefaultSortFunction
xsltDoSortFunction
xsltLocaleStrcmp
xsltSetCtxtSortFunc
xsltSetSortFunc
xsltSortFunc
sorts
xsltDefaultSortFunction
xsltDoSortFunction
xsltLocaleStrcmp
xsltSortFunc
space
_xsltStylesheet
xsltFindElemSpaceHandling
xsltFreeDocuments
xsltNeedElemSpaceHandling
spaces
xsltApplyStripSpaces
spec
_xsltCompilerCtxt
special
_xsltCompilerCtxt
xsltFormatNumberConversion
specialCharacters
xsltFormatNumberConversion
specific
XSLT_LIBXSLT_NAMESPACE
_xsltTransformContext
xsltDoSortFunction
xsltExtInitFunction
xsltSetCtxtSecurityPrefs
xsltSetTransformErrorFunc
xsltStyleExtInitFunction
xsltTransformError
specification
XSLT_NAMESPACE
specified
XSLT_MAX_SORT
_xsltCompilerCtxt
xsltDoSortFunction
xsltFindTemplate
xsltGetCNsProp
xsltGetNsProp
xsltRunStylesheet
xsltRunStylesheetUser
xsltSetCtxtSortFunc
specify
xsltRunStylesheet
xsltRunStylesheetUser
spent
_xsltTemplate
stack
_xsltTemplate
_xsltTransformContext
xslAddCall
xslDropCall
xsltAddStackElemList
xsltApplyOneTemplate
xsltFreeStackElemList
xsltLocalVariablePop
xsltLocalVariablePush
standalone
_xsltStylesheet
start
xsltApplyOneTemplate
xsltEvalGlobalVariables
start-node
xsltParseSequenceConstructor
starting
xsltEvalUserParams
xsltQuoteUserParams
state
xslHandleDebugger
xsltCleanupTemplates
xsltExtensionInstructionResultFinalize
xsltFlagRVTs
xsltGetXIncludeDefault
states
xsltApplyOneTemplate
static
xsltEvalStaticAttrValueTemplate
statically
xsltAllocateExtra
status
_xsltTransformContext
stderr
xsltSetGenericDebugFunc
xsltSetGenericErrorFunc
stdout
xsltDebugDumpExtensions
steps
xsltNormalizeCompSteps
still
xsltExtensionInstructionResultRegister
stopped
CHECK_STOPPED
CHECK_STOPPED0
CHECK_STOPPEDE
storage
XSLT_ITEM_COMPATIBILITY_FIELDS
_xsltDocument
_xsltEffectiveNs
store
xsltInitElemPreComp
stored
XSLT_RUNTIME_EXTRA
XSLT_RUNTIME_EXTRA_FREE
XSLT_RUNTIME_EXTRA_LST
_xsltStylesheet
xsltEvalOneUserParam
xsltEvalUserParams
xsltPointerListAddSize
xsltQuoteOneUserParam
stores
xsltReleaseRVT
str1
xsltLocaleStrcmp
str2
xsltLocaleStrcmp
strict
_xsltCompilerCtxt
string?
xsltFormatNumberFunction
strings
_xsltStylesheet
_xsltTransformContext
xsltLocaleStrcmp
strip-space
_xsltStylesheet
xsltFindElemSpaceHandling
stripped
xsltFindElemSpaceHandling
xsltNeedElemSpaceHandling
stripping
xsltNeedElemSpaceHandling
struct
xsltInitElemPreComp
structure
XSLT_ITEM_COMPATIBILITY_FIELDS
_xsltNsMap
xsltDocumentComp
xsltElemPreCompDeallocator
xsltInitElemPreComp
xsltLoadStylesheetPI
xsltParseStylesheetDoc
xsltParseStylesheetFile
xsltParseStylesheetImportedDoc
xsltPointerListAddSize
xsltPointerListCreate
xsltPointerListFree
structured
_xsltCompilerCtxt
structures
xsltCompileAttr
xsltFreeAVTList
xsltFreeStyleDocuments
xsltParseStylesheetDoc
xsltParseStylesheetImportedDoc
xsltParseStylesheetProcess
stuff
_xsltStylesheet
style
_xsltStylesheet
xsltGetTemplate
xsltLoadStyleDocument
xsltNewStyleDocument
xsltRunStylesheet
xsltRunStylesheetUser
stylesheet-level
xsltFreeStyleDocuments
xsltParseStylesheetProcess
stylesheet-modules
xsltFreeStyleDocuments
stylesheet-prefix
xsltNamespaceAlias
stylesheets
xsltEvalUserParams
xsltQuoteUserParams
subpattern
xsltFormatNumberConversion
subpattern{
xsltFormatNumberConversion
subpattern}
xsltFormatNumberConversion
subsequent
xsltSetGenericDebugFunc
xsltSetGenericErrorFunc
xsltSetTransformErrorFunc
subsidiary
_xsltDocument
substituted
xsltEvalAttrValueTemplate
substitution
xsltGetCNsProp
xsltGetNsProp
subtree
xsltLoadStylesheetPI
success
xsltAddKey
xsltAddStackElemList
xsltEvalGlobalVariables
xsltEvalOneUserParam
xsltEvalUserParams
xsltExtensionInstructionResultFinalize
xsltExtensionInstructionResultRegister
xsltFlagRVTs
xsltInitAllDocKeys
xsltInitCtxtKey
xsltLocalVariablePush
xsltParseStylesheetImport
xsltParseStylesheetInclude
xsltQuoteOneUserParam
xsltQuoteUserParams
xsltRegisterExtElement
xsltRegisterExtFunction
xsltRegisterExtPrefix
xsltRegisterLocalRVT
xsltRegisterPersistRVT
xsltRegisterTmpRVT
xsltRestoreDocumentNamespaces
xsltSaveResultToString
xsltSetDebuggerCallbacks
successful
xsltRegisterExtModuleElement
xsltRegisterExtModuleFunction
xsltRegisterExtModuleTopLevel
xsltUnregisterExtModuleElement
xsltUnregisterExtModuleFunction
xsltUnregisterExtModuleTopLevel
sucess
xslAddCall
sucessful
xsltRegisterExtModule
xsltRegisterExtModuleFull
xsltUnregisterExtModule
such
XSLT_ITEM_COMPATIBILITY_FIELDS
suffix
_xsltFormatNumberInfo
xsltFormatNumberConversion
suggested
xsltGetSpecialNamespace
suitable
xsltCompilePattern
sun
xsltFormatNumberConversion
support
XSLT_LOCALE_NONE
XSLT_LOCALE_WINAPI
xsltFreeLocales
supported
XSLT_DEFAULT_VERSION
sure
xsltAllocateExtraCtxt
system
xsltNewLocale
system-property
xsltSystemPropertyFunction

A-I J-R S-a b-c d-e f-g h-i j-m n-o p-p q-s t-u v-x y-z

Daniel Veillard

PK|0])l- redhat.gifnu[GIF89a,)  f3Ys3 @&?f  Y рML000ppp&=7PPP薓jeLG|pp@@@r yu =00刄.(!,,)@pH,Ȥrl:ШTZجvk-r`jߛ']Es!~Y3{o ,zD[mn% B ze[VzE%z\yo {!X&{ n FzgV F{CXnLoYn DK{jnE$n G *衷J0$J%(䯔 Ŗ]4HwE%dX(tI.%,X5))Ro6xTkOfz߬0ǁKYJ=4RpBFH,|#fS{\| N9$AB{4rY P (0`Pt˸z{5<`@T;R]C3ZF_azoZڵpMCzW~`㽓~E FѱHÄ41 oFF :2;PK|0];?#### templates.gifnu[GIF87aܒ6@ @9 @|,`7!!@@ =@@ 8(86\M@9 @@x6 !,6SH@ 5(AP6@\B`j@{`7/ !\S= {@(P56(h6@\$t7jL{/@X>`AX>*@@S!Q/!ftG 6q@$/_Pw_d8@I`=7e` \$@P6_@c|f6P_+@ *{` ,(7$ |`Q{` @pP8_|` A@ *|` ,H*\ȰÇ#JHŋ3jȱǏ CIɓ(S\ɲ˗0cʜI͛8sɳϟ@ JѣH*]ʴӧPJJիXjʵׯ`KlHVT{@aʝ:V`]wAոwbߵK0v9↍F&Ɇ3ky#Δ+KLZ4^ӛSyYkyѲ=l։C q׻֍z'].\v澣>]9ts>zoԙ#Odo}g=v뗏|UVY۹מn7 ~ "^h 2_~E7`qfaB Fa&g6gԡ]n⋐ hڈ,'zJh-(h=wmH2$:%Dp1%EGe&zg[zY+Fwg:&oS(YBm&->'miwbwڹ%`j*駀)jIC eG&Z(e­)cpVꢮڹEeUp66a(蜎7wA v)>:8oڡ.ȫ'sJ+۫J|֊[,kp. ֘GٽW.{F .[#2Z$f ,,yU4l8kQ?\ȒB&H_vtSS?m5VUS}֙e͔\\`mQe'l6mǍ5rM@ۭ7TxހPnxrt8/>ΐG.{UێtRgxzuDz:z}Gkѹ\MOYj'ɡu`Db_{W{|4ޣ :Ǿ$&+ݱ} 6~"bƪ$jA4..L(GA̠s4ɡ}Wî-PFH'%OzcHÜͰ8dS cu>4Ұ\8 =:paMkbkFbfՏy B?:=iEfLbW3*ZjJӢ D(?<|cH@ī_~$|nlXF-n1rV#JъqR7I>P=qP/(FE26*=QY3ܨ@#&uK#&0Q/˜`z&,%iVs 7>a3De%WВ|YDmF0f+Ƭx ʔ>ӹKոSp)f϶5W,u t-&[(CYҘ͢λ$J=TxF?ʥ~3%I%cґ\)Z”2-iHOє3^VlSͨ6AKWrӌ(jO-HWTt.5OU fIjWZSnU LiDwVCukM*46t|]O41,KQSPB'PꥮfJ5Ι49mTZ4M,hC˺ *i_^_0̭pq [Bv-t 8 HؽvaDuUnz\զR#$$)]-gp!рr5?NR֥o}g@/aGcY_׷%p!#3:GeY ꭣwxajM4l~0<ݲҕÃMvlYlY&kcخ]Y*`Mu%9~U,[SyVN L20̞3\W}V֢^9#lPR؝l^ϸs `=OYрap }X4;5l׊Ol.VؖVEPʻY n-mPGzkj D~;Nc$i6ZlcK^"a^Ic" ݡX]mBsQBryUnwxBjƢ͌}oP[ ?ۓSup4@O 7P*nqM-:c9P入 :kP/'^ >s~I7B׽, 4G0}_X_V2z[ʹ.]5M 3e)Ϟ`: ;kHJo;t.n_{ne!p궽=+wffWs0~½-5zfgۚWпgm7< r)w76pGUd>nJyMVAYφ tٽgyk9U>.^DYvO'ZVIH&&]f@;)HAMp4Z'Ic#?,1v;*`a`y4pJzƄ/HWwՓ{߅ OHՄ!Uwhr2SnJbng]Wk&aG|4J}zZWtwJ#vwL&AsbjGRb׉QcCT`ͥ怞z(zk&.^HpAs)(*7B%ƃcU^mТȅ/([D"bZnΘh׍ËRMVo蘎|[Lw@ز-xq5 9IKi[w(k~AVvm'jFq^7f>sN*yse0uyrRYd0b)xg1Yg.55jWި~`~-cS}H7}*)5FD1pa8dmEU1ߕ#(EXyfUKt6j[*fb;FGQ9i%UBHb, eo3p6N5܂18BÕwӗxri]sd陇aȗIY[eٚ~3)i9Ɣ ՙVDl ٛ5zke1'D4bGWqy N\qy?IHUhst? Dᕅ'ILcg1ji#*dyɞ)kmuIlȴv(j'Yuj%I)颣 &9hIK>*h: T3Jʟ޴/ڡP9eٜ'G&*R#CH*L(6qgjEJOj"ZVC01zz}\wa:'rIY-z1NfʨMꨅ K]<}*w:`Cө&'*Xk\2ZZmutC FJvjɔ!;Hq< (qќSNGlZBum6'䚧駒HghI WXZ5cSk82ۺ;Y}霾ڃR*9v; 5?)TNgȤ/q}wF ,wW6{)A5yh=4g>[!D[pdWTYZpDB{QۖȺUʅ_k]Z +ƔnfrڪgɶoÌS;1fxL$k a:P h3(J2ZZxA((~®U:Tᚭ-+pz҇[|YX{Hog2KT@˵4xvk;cʛMٴyT aۧ {_X{՛1yk+ٽ1h륦ƽ[7눓[پvX2JfiÖb KÿA Y' l8J<=e [5v\$ CTn%I#,z/4켜*sxW k=T <җy&-(MiҞ'5lbQ{ٙ,٢,٧-wsӪ ۬-Cqj#ڸ@jڼ۾6s=W}M85=s]n@gڽοͰMMܓ{} -ߕWm{}=VR- NMPUU~YBč ^_A(Ⓣi.~Z$>ௗ8=U㇡M6B>,G,F<>$bT(uYrv {:]SՓLQu7^p&< `[b^Qs<\ ͈xѮa{1dƙYkK&Mc XX~Ν b,݆~z,D\vE-~_WnvNnw+Jm`ԭc+h>2wW&MNJ^SCchL9{In? 3\nK( XK<|t>30 =ƷN椈q~SZ49o #G&̀<oV6Wԓ}D+cN|/_mT =7 JO?PE,GW͖h[8a~ǻʸ]OsNrő&ay|?{mڵQD6QAFĨQH%MDRJ-]2$ʏ.X3'Θ+gϞEETRMʰaTwu +Ԏ#fVXe~56њ$ѪW\@}5]}0۹FXFËvYɍ)4eΝ= ZhҥMFMg֭]k~molڵmkշ}n>{GsN|\s;?N]̫VM8M>uݿNoZ?UCOg0@/l> İ(0D]"40$ ۍF1F*,ă2QEE"MqQ| I ;A:L9sF MPFTOI/RHLSO?TJcQ2uI'ԴVSo늼sr>*LUWrԴh2W\dQW0 ԐJȤ᎜'g]Gh+KS?p#0 wc4֣q-LpĨ$5dXXA2{]amܗAmYKFwUbע2^07E͗Š<݋ ڌdvu?"IV8? /U뚓a}c{UgyVn֓uhĊybl͢Zڸ]#^:ͱvsȖj;l_CWQLtสHoZ7=>M{ߞ/9j$Zi<%?~?.yʰ052fmfW zЁ`F2qO^wJ@FPO_B8ߐ헿|Yl; ORE4! kQqLğ'bG&qc[֖'/Dݟ>xA"Hšr9cH,fNIJH9N=ZSQ:Cd"){1R%!G5ҍ,$5.d6JhI(7vc*Vvoa,,H۔kr$St9=^ҕ S)bHY fϖeVYMl,\ZMkNT8oV4ᜋ:׹g$Menb{|fN$W&)oxU%UILyi)j5L_Y/GUL۾}=L{%H:Be `;V5BpA\=Q+k.rRFXG̰Qb*&ӉDGV;4//\AB7hHJFG?!d*ֈK,(M_O}WhcJzbGf>,`F,|Z5YT>j,dlØal4"ug}gd2Ț+"z\&aۍZXĽ2/KH\_BV7t9f5Ϝ>Є!|eͺy~yL 0~3M.&:mVJ;ծ H-ύt[#bynx_kW:аry[=GC{5 j}㼬z oqʱ9IbRbAQyYnW1̷rӹ[&sܒEz N=9<6΅nѫ۫[Tχraםv7Ș)vcn7 [ww|<~s'2[rJd|Yx?H򣤼 yG^|3jЇ>M?G7_Tس󆞑kK+=﷊>4m 웯<şt_^>għ_i>G_?O{tc#\?sD\@c߳ Ի@ASD3CLdډ AǢī:A $˜2#$Tˆb& 'y)$*j,,-BZ/ļ!C 243D!5sC8,ê;<<ß:>AD$A\B4DrDBcF,G\EfJDL|C2D NDPCQ:RB3TAdE W$ tZZ]l^EX\`,[$F4c4]TFafgƽi4jơl4dƀop_!rܔsDGBQuēvtG8x Reference Manual for libxslt
Action against software patentsGNOME2 LogoW3C logoRed Hat Logo
Made with Libxslt Logo

The XSLT C library for GNOME

Reference Manual for libxslt

API Menu
Related links
API Indexes

Table of Contents

  • attributes: interface for the XSLT attribute handling
  • documents: interface for the document handling
  • extensions: interface for the extension support
  • extra: interface for the non-standard features
  • functions: interface for the XSLT functions not from XPath
  • imports: interface for the XSLT import support
  • keys: interface for the key matching used in key() and template matches.
  • namespaces: interface for the XSLT namespace handling
  • numbersInternals: Implementation of the XSLT number functions
  • pattern: interface for the pattern matching used in template matches.
  • preproc: precomputing stylesheets
  • security: interface for the libxslt security framework
  • templates: interface for the template processing
  • transform: the XSLT engine transformation part.
  • variables: interface for the variable matching and lookup.
  • xslt: Interfaces, constants and types related to the XSLT engine
  • xsltInternals: internal data structures, constants and functions
  • xsltexports: macros for marking symbols as exportable/importable.
  • xsltlocale: Locale handling
  • xsltutils: set of utilities for the XSLT engine

Daniel Veillard

PK|0]ed""html/libxslt-preproc.htmlnu[ Module preproc from libxslt
Action against software patentsGNOME2 LogoW3C logoRed Hat Logo
Made with Libxslt Logo

The XSLT C library for GNOME

Module preproc from libxslt

API Menu
Related links
API Indexes

this is the compilation phase, where most of the stylesheet is "compiled" into faster to use data.

Table of Contents

xsltElemPreCompPtr	xsltDocumentComp	(xsltStylesheetPtr style, 
xmlNodePtr inst,
xsltTransformFunction function)
void	xsltFreeStylePreComps		(xsltStylesheetPtr style)
void	xsltStylePreCompute		(xsltStylesheetPtr style, 
xmlNodePtr inst)

Description

Function: xsltDocumentComp

xsltElemPreCompPtr	xsltDocumentComp	(xsltStylesheetPtr style, 
xmlNodePtr inst,
xsltTransformFunction function)

Pre process an XSLT-1.1 document element

style:the XSLT stylesheet
inst:the instruction in the stylesheet
function:unused
Returns:a precompiled data structure for the element

Function: xsltFreeStylePreComps

void	xsltFreeStylePreComps		(xsltStylesheetPtr style)

Free up the memory allocated by all precomputed blocks

style:an XSLT transformation context

Function: xsltStylePreCompute

void	xsltStylePreCompute		(xsltStylesheetPtr style, 
xmlNodePtr inst)

Precompute an XSLT stylesheet element

style:the XSLT stylesheet
inst:the instruction in the stylesheet

Daniel Veillard

PK|0]}2html/libxslt-extensions.htmlnu[ Module extensions from libxslt
Action against software patentsGNOME2 LogoW3C logoRed Hat Logo
Made with Libxslt Logo

The XSLT C library for GNOME

Module extensions from libxslt

API Menu
Related links
API Indexes

This provide the API needed for simple and module extension support.

Table of Contents

int	xsltCheckExtPrefix		(xsltStylesheetPtr style, 
const xmlChar * URI)
int	xsltCheckExtURI			(xsltStylesheetPtr style, 
const xmlChar * URI)
void	xsltDebugDumpExtensions		(FILE * output)
xsltTransformFunction	xsltExtElementLookup	(xsltTransformContextPtr ctxt, 
const xmlChar * name,
const xmlChar * URI)
Function type: xsltExtInitFunction
void *	xsltExtInitFunction		(xsltTransformContextPtr ctxt, 
const xmlChar * URI)
xsltTransformFunction	xsltExtModuleElementLookup	(const xmlChar * name, 
const xmlChar * URI)
xsltPreComputeFunction	xsltExtModuleElementPreComputeLookup	(const xmlChar * name, 
const xmlChar * URI)
xmlXPathFunction	xsltExtModuleFunctionLookup	(const xmlChar * name, 
const xmlChar * URI)
xsltTopLevelFunction	xsltExtModuleTopLevelLookup	(const xmlChar * name, 
const xmlChar * URI)
Function type: xsltExtShutdownFunction
void	xsltExtShutdownFunction		(xsltTransformContextPtr ctxt, 
const xmlChar * URI,
void * data)
void	xsltFreeCtxtExts		(xsltTransformContextPtr ctxt)
void	xsltFreeExts			(xsltStylesheetPtr style)
void *	xsltGetExtData			(xsltTransformContextPtr ctxt, 
const xmlChar * URI)
xmlHashTablePtr	xsltGetExtInfo		(xsltStylesheetPtr style, 
const xmlChar * URI)
int	xsltInitCtxtExts		(xsltTransformContextPtr ctxt)
void	xsltInitElemPreComp		(xsltElemPreCompPtr comp, 
xsltStylesheetPtr style,
xmlNodePtr inst,
xsltTransformFunction function,
xsltElemPreCompDeallocator freeFunc)
void	xsltInitGlobals			(void)
xsltElemPreCompPtr	xsltNewElemPreComp	(xsltStylesheetPtr style, 
xmlNodePtr inst,
xsltTransformFunction function)
xsltElemPreCompPtr	xsltPreComputeExtModuleElement	(xsltStylesheetPtr style, 
xmlNodePtr inst)
Function type: xsltPreComputeFunction
xsltElemPreCompPtr	xsltPreComputeFunction	(xsltStylesheetPtr style, 
xmlNodePtr inst,
xsltTransformFunction function)
int	xsltRegisterExtElement		(xsltTransformContextPtr ctxt, 
const xmlChar * name,
const xmlChar * URI,
xsltTransformFunction function)
int	xsltRegisterExtFunction		(xsltTransformContextPtr ctxt, 
const xmlChar * name,
const xmlChar * URI,
xmlXPathFunction function)
int	xsltRegisterExtModule		(const xmlChar * URI, 
xsltExtInitFunction initFunc,
xsltExtShutdownFunction shutdownFunc)
int	xsltRegisterExtModuleElement	(const xmlChar * name, 
const xmlChar * URI,
xsltPreComputeFunction precomp,
xsltTransformFunction transform)
int	xsltRegisterExtModuleFull	(const xmlChar * URI, 
xsltExtInitFunction initFunc,
xsltExtShutdownFunction shutdownFunc,
xsltStyleExtInitFunction styleInitFunc,
xsltStyleExtShutdownFunction styleShutdownFunc)
int	xsltRegisterExtModuleFunction	(const xmlChar * name, 
const xmlChar * URI,
xmlXPathFunction function)
int	xsltRegisterExtModuleTopLevel	(const xmlChar * name, 
const xmlChar * URI,
xsltTopLevelFunction function)
int	xsltRegisterExtPrefix		(xsltStylesheetPtr style, 
const xmlChar * prefix,
const xmlChar * URI)
void	xsltRegisterTestModule		(void)
void	xsltShutdownCtxtExts		(xsltTransformContextPtr ctxt)
void	xsltShutdownExts		(xsltStylesheetPtr style)
Function type: xsltStyleExtInitFunction
void *	xsltStyleExtInitFunction	(xsltStylesheetPtr style, 
const xmlChar * URI)
Function type: xsltStyleExtShutdownFunction
void	xsltStyleExtShutdownFunction	(xsltStylesheetPtr style, 
const xmlChar * URI,
void * data)
void *	xsltStyleGetExtData		(xsltStylesheetPtr style, 
const xmlChar * URI)
void *	xsltStyleStylesheetLevelGetExtData	(xsltStylesheetPtr style, 
const xmlChar * URI)
Function type: xsltTopLevelFunction
void	xsltTopLevelFunction		(xsltStylesheetPtr style, 
xmlNodePtr inst)
int	xsltUnregisterExtModule		(const xmlChar * URI)
int	xsltUnregisterExtModuleElement	(const xmlChar * name, 
const xmlChar * URI)
int	xsltUnregisterExtModuleFunction	(const xmlChar * name, 
const xmlChar * URI)
int	xsltUnregisterExtModuleTopLevel	(const xmlChar * name, 
const xmlChar * URI)
xsltTransformContextPtr	xsltXPathGetTransformContext	(xmlXPathParserContextPtr ctxt)

Description

Function: xsltCheckExtPrefix

int	xsltCheckExtPrefix		(xsltStylesheetPtr style, 
const xmlChar * URI)

Check if the given prefix is one of the declared extensions. This is intended to be called only at compile-time. Called by: xsltGetInheritedNsList() (xslt.c) xsltParseTemplateContent (xslt.c)

style:the stylesheet
URI:the namespace prefix (possibly NULL)
Returns:1 if this is an extension, 0 otherwise

Function: xsltCheckExtURI

int	xsltCheckExtURI			(xsltStylesheetPtr style, 
const xmlChar * URI)

Check if the given prefix is one of the declared extensions. This is intended to be called only at compile-time. Called by: xsltPrecomputeStylesheet() (xslt.c) xsltParseTemplateContent (xslt.c)

style:the stylesheet
URI:the namespace URI (possibly NULL)
Returns:1 if this is an extension, 0 otherwise

Function: xsltDebugDumpExtensions

void	xsltDebugDumpExtensions		(FILE * output)

Dumps a list of the registered XSLT extension functions and elements

output:the FILE * for the output, if NULL stdout is used

Function: xsltExtElementLookup

xsltTransformFunction	xsltExtElementLookup	(xsltTransformContextPtr ctxt, 
const xmlChar * name,
const xmlChar * URI)

Looks up an extension element. @ctxt can be NULL to search only in module elements.

ctxt:an XSLT process context
name:the element name
URI:the element namespace URI
Returns:the element callback or NULL if not found

Function type: xsltExtInitFunction

Function type: xsltExtInitFunction
void *	xsltExtInitFunction		(xsltTransformContextPtr ctxt, 
const xmlChar * URI)

A function called at initialization time of an XSLT extension module.

ctxt:an XSLT transformation context
URI:the namespace URI for the extension
Returns:a pointer to the module specific data for this transformation.

Function: xsltExtModuleElementLookup

xsltTransformFunction	xsltExtModuleElementLookup	(const xmlChar * name, 
const xmlChar * URI)

Looks up an extension module element

name:the element name
URI:the element namespace URI
Returns:the callback function if found, NULL otherwise.

Function: xsltExtModuleElementPreComputeLookup

xsltPreComputeFunction	xsltExtModuleElementPreComputeLookup	(const xmlChar * name, 
const xmlChar * URI)

Looks up an extension module element pre-computation function

name:the element name
URI:the element namespace URI
Returns:the callback function if found, NULL otherwise.

Function: xsltExtModuleFunctionLookup

xmlXPathFunction	xsltExtModuleFunctionLookup	(const xmlChar * name, 
const xmlChar * URI)

Looks up an extension module function

name:the function name
URI:the function namespace URI
Returns:the function if found, NULL otherwise.

Function: xsltExtModuleTopLevelLookup

xsltTopLevelFunction	xsltExtModuleTopLevelLookup	(const xmlChar * name, 
const xmlChar * URI)

Looks up an extension module top-level element

name:the top-level element name
URI:the top-level element namespace URI
Returns:the callback function if found, NULL otherwise.

Function type: xsltExtShutdownFunction

Function type: xsltExtShutdownFunction
void	xsltExtShutdownFunction		(xsltTransformContextPtr ctxt, 
const xmlChar * URI,
void * data)

A function called at shutdown time of an XSLT extension module.

ctxt:an XSLT transformation context
URI:the namespace URI for the extension
data:the data associated to this module

Function: xsltFreeCtxtExts

void	xsltFreeCtxtExts		(xsltTransformContextPtr ctxt)

Free the XSLT extension data

ctxt:an XSLT transformation context

Function: xsltFreeExts

void	xsltFreeExts			(xsltStylesheetPtr style)

Free up the memory used by XSLT extensions in a stylesheet

style:an XSLT stylesheet

Function: xsltGetExtData

void *	xsltGetExtData			(xsltTransformContextPtr ctxt, 
const xmlChar * URI)

Retrieve the data associated to the extension module in this given transformation.

ctxt:an XSLT transformation context
URI:the URI associated to the exension module
Returns:the pointer or NULL if not present

Function: xsltGetExtInfo

xmlHashTablePtr	xsltGetExtInfo		(xsltStylesheetPtr style, 
const xmlChar * URI)

looks up URI in extInfos of the stylesheet

style:pointer to a stylesheet
URI:the namespace URI desired
Returns:a pointer to the hash table if found, else NULL

Function: xsltInitCtxtExts

int	xsltInitCtxtExts		(xsltTransformContextPtr ctxt)

Initialize the set of modules with registered stylesheet data

ctxt:an XSLT transformation context
Returns:the number of modules initialized or -1 in case of error

Function: xsltInitElemPreComp

void	xsltInitElemPreComp		(xsltElemPreCompPtr comp, 
xsltStylesheetPtr style,
xmlNodePtr inst,
xsltTransformFunction function,
xsltElemPreCompDeallocator freeFunc)

Initializes an existing #xsltElemPreComp structure. This is usefull when extending an #xsltElemPreComp to store precomputed data. This function MUST be called on any extension element precomputed data struct.

comp:an #xsltElemPreComp (or generally a derived structure)
style:the XSLT stylesheet
inst:the element node
function:the transform function
freeFunc:the @comp deallocator

Function: xsltInitGlobals

void	xsltInitGlobals			(void)

Initialize the global variables for extensions

Function: xsltNewElemPreComp

xsltElemPreCompPtr	xsltNewElemPreComp	(xsltStylesheetPtr style, 
xmlNodePtr inst,
xsltTransformFunction function)

Creates and initializes an #xsltElemPreComp

style:the XSLT stylesheet
inst:the element node
function:the transform function
Returns:the new and initialized #xsltElemPreComp

Function: xsltPreComputeExtModuleElement

xsltElemPreCompPtr	xsltPreComputeExtModuleElement	(xsltStylesheetPtr style, 
xmlNodePtr inst)

Precomputes an extension module element

style:the stylesheet
inst:the element node
Returns:the precomputed data

Function type: xsltPreComputeFunction

Function type: xsltPreComputeFunction
xsltElemPreCompPtr	xsltPreComputeFunction	(xsltStylesheetPtr style, 
xmlNodePtr inst,
xsltTransformFunction function)

style:
inst:
function:
Returns:

Function: xsltRegisterExtElement

int	xsltRegisterExtElement		(xsltTransformContextPtr ctxt, 
const xmlChar * name,
const xmlChar * URI,
xsltTransformFunction function)

Registers an extension element

ctxt:an XSLT transformation context
name:the name of the element
URI:the URI associated to the element
function:the actual implementation which should be called
Returns:0 in case of success, -1 in case of failure

Function: xsltRegisterExtFunction

int	xsltRegisterExtFunction		(xsltTransformContextPtr ctxt, 
const xmlChar * name,
const xmlChar * URI,
xmlXPathFunction function)

Registers an extension function

ctxt:an XSLT transformation context
name:the name of the element
URI:the URI associated to the element
function:the actual implementation which should be called
Returns:0 in case of success, -1 in case of failure

Function: xsltRegisterExtModule

int	xsltRegisterExtModule		(const xmlChar * URI, 
xsltExtInitFunction initFunc,
xsltExtShutdownFunction shutdownFunc)

Register an XSLT extension module to the library.

URI:URI associated to this module
initFunc:the module initialization function
shutdownFunc:the module shutdown function
Returns:0 if sucessful, -1 in case of error

Function: xsltRegisterExtModuleElement

int	xsltRegisterExtModuleElement	(const xmlChar * name, 
const xmlChar * URI,
xsltPreComputeFunction precomp,
xsltTransformFunction transform)

Registers an extension module element.

name:the element name
URI:the element namespace URI
precomp:the pre-computation callback
transform:the transformation callback
Returns:0 if successful, -1 in case of error.

Function: xsltRegisterExtModuleFull

int	xsltRegisterExtModuleFull	(const xmlChar * URI, 
xsltExtInitFunction initFunc,
xsltExtShutdownFunction shutdownFunc,
xsltStyleExtInitFunction styleInitFunc,
xsltStyleExtShutdownFunction styleShutdownFunc)

Register an XSLT extension module to the library.

URI:URI associated to this module
initFunc:the module initialization function
shutdownFunc:the module shutdown function
styleInitFunc:the module initialization function
styleShutdownFunc:the module shutdown function
Returns:0 if sucessful, -1 in case of error

Function: xsltRegisterExtModuleFunction

int	xsltRegisterExtModuleFunction	(const xmlChar * name, 
const xmlChar * URI,
xmlXPathFunction function)

Registers an extension module function.

name:the function name
URI:the function namespace URI
function:the function callback
Returns:0 if successful, -1 in case of error.

Function: xsltRegisterExtModuleTopLevel

int	xsltRegisterExtModuleTopLevel	(const xmlChar * name, 
const xmlChar * URI,
xsltTopLevelFunction function)

Registers an extension module top-level element.

name:the top-level element name
URI:the top-level element namespace URI
function:the top-level element callback
Returns:0 if successful, -1 in case of error.

Function: xsltRegisterExtPrefix

int	xsltRegisterExtPrefix		(xsltStylesheetPtr style, 
const xmlChar * prefix,
const xmlChar * URI)

Registers an extension namespace This is called from xslt.c during compile-time. The given prefix is not needed. Called by: xsltParseExtElemPrefixes() (new function) xsltRegisterExtPrefix() (old function)

style:an XSLT stylesheet
prefix:the prefix used (optional)
URI:the URI associated to the extension
Returns:0 in case of success, 1 if the @URI was already registered as an extension namespace and -1 in case of failure

Function: xsltRegisterTestModule

void	xsltRegisterTestModule		(void)

Registers the test module

Function: xsltShutdownCtxtExts

void	xsltShutdownCtxtExts		(xsltTransformContextPtr ctxt)

Shutdown the set of modules loaded

ctxt:an XSLT transformation context

Function: xsltShutdownExts

void	xsltShutdownExts		(xsltStylesheetPtr style)

Shutdown the set of modules loaded

style:an XSLT stylesheet

Function type: xsltStyleExtInitFunction

Function type: xsltStyleExtInitFunction
void *	xsltStyleExtInitFunction	(xsltStylesheetPtr style, 
const xmlChar * URI)

A function called at initialization time of an XSLT extension module.

style:
URI:the namespace URI for the extension
Returns:a pointer to the module specific data for this transformation.

Function type: xsltStyleExtShutdownFunction

Function type: xsltStyleExtShutdownFunction
void	xsltStyleExtShutdownFunction	(xsltStylesheetPtr style, 
const xmlChar * URI,
void * data)

A function called at shutdown time of an XSLT extension module.

style:
URI:the namespace URI for the extension
data:the data associated to this module

Function: xsltStyleGetExtData

void *	xsltStyleGetExtData		(xsltStylesheetPtr style, 
const xmlChar * URI)

Retrieve the data associated to the extension module in this given stylesheet. Called by: xsltRegisterExtPrefix(), ( xsltExtElementPreCompTest(), xsltExtInitTest )

style:an XSLT stylesheet
URI:the URI associated to the exension module
Returns:the pointer or NULL if not present

Function: xsltStyleStylesheetLevelGetExtData

void *	xsltStyleStylesheetLevelGetExtData	(xsltStylesheetPtr style, 
const xmlChar * URI)

Retrieve the data associated to the extension module in this given stylesheet.

style:an XSLT stylesheet
URI:the URI associated to the exension module
Returns:the pointer or NULL if not present

Function type: xsltTopLevelFunction

Function type: xsltTopLevelFunction
void	xsltTopLevelFunction		(xsltStylesheetPtr style, 
xmlNodePtr inst)

style:
inst:

Function: xsltUnregisterExtModule

int	xsltUnregisterExtModule		(const xmlChar * URI)

Unregister an XSLT extension module from the library.

URI:URI associated to this module
Returns:0 if sucessful, -1 in case of error

Function: xsltUnregisterExtModuleElement

int	xsltUnregisterExtModuleElement	(const xmlChar * name, 
const xmlChar * URI)

Unregisters an extension module element

name:the element name
URI:the element namespace URI
Returns:0 if successful, -1 in case of error.

Function: xsltUnregisterExtModuleFunction

int	xsltUnregisterExtModuleFunction	(const xmlChar * name, 
const xmlChar * URI)

Unregisters an extension module function

name:the function name
URI:the function namespace URI
Returns:0 if successful, -1 in case of error.

Function: xsltUnregisterExtModuleTopLevel

int	xsltUnregisterExtModuleTopLevel	(const xmlChar * name, 
const xmlChar * URI)

Unregisters an extension module top-level element

name:the top-level element name
URI:the top-level element namespace URI
Returns:0 if successful, -1 in case of error.

Function: xsltXPathGetTransformContext

xsltTransformContextPtr	xsltXPathGetTransformContext	(xmlXPathParserContextPtr ctxt)

Provides the XSLT transformation context from the XPath transformation context. This is useful when an XPath function in the extension module is called by the XPath interpreter and that the XSLT context is needed for example to retrieve the associated data pertaining to this XSLT transformation.

ctxt:an XPath transformation context
Returns:the XSLT transformation context or NULL in case of error.

Daniel Veillard

PK|0]66html/libxslt-functions.htmlnu[ Module functions from libxslt
Action against software patentsGNOME2 LogoW3C logoRed Hat Logo
Made with Libxslt Logo

The XSLT C library for GNOME

Module functions from libxslt

API Menu
Related links
API Indexes

a set of extra functions coming from XSLT but not in XPath

Table of Contents

#define XSLT_REGISTER_FUNCTION_LOOKUP
void	xsltDocumentFunction		(xmlXPathParserContextPtr ctxt, 
int nargs)
void	xsltElementAvailableFunction	(xmlXPathParserContextPtr ctxt, 
int nargs)
void	xsltFormatNumberFunction	(xmlXPathParserContextPtr ctxt, 
int nargs)
void	xsltFunctionAvailableFunction	(xmlXPathParserContextPtr ctxt, 
int nargs)
void	xsltGenerateIdFunction		(xmlXPathParserContextPtr ctxt, 
int nargs)
void	xsltKeyFunction			(xmlXPathParserContextPtr ctxt, 
int nargs)
void	xsltRegisterAllFunctions	(xmlXPathContextPtr ctxt)
void	xsltSystemPropertyFunction	(xmlXPathParserContextPtr ctxt, 
int nargs)
void	xsltUnparsedEntityURIFunction	(xmlXPathParserContextPtr ctxt, 
int nargs)
xmlXPathFunction	xsltXPathFunctionLookup	(xmlXPathContextPtr ctxt, 
const xmlChar * name,
const xmlChar * ns_uri)

Description

Macro: XSLT_REGISTER_FUNCTION_LOOKUP

#define XSLT_REGISTER_FUNCTION_LOOKUP

Registering macro, not general purpose at all but used in different modules.

Function: xsltDocumentFunction

void	xsltDocumentFunction		(xmlXPathParserContextPtr ctxt, 
int nargs)

Implement the document() XSLT function node-set document(object, node-set?)

ctxt:the XPath Parser context
nargs:the number of arguments

Function: xsltElementAvailableFunction

void	xsltElementAvailableFunction	(xmlXPathParserContextPtr ctxt, 
int nargs)

Implement the element-available() XSLT function boolean element-available(string)

ctxt:the XPath Parser context
nargs:the number of arguments

Function: xsltFormatNumberFunction

void	xsltFormatNumberFunction	(xmlXPathParserContextPtr ctxt, 
int nargs)

Implement the format-number() XSLT function string format-number(number, string, string?)

ctxt:the XPath Parser context
nargs:the number of arguments

Function: xsltFunctionAvailableFunction

void	xsltFunctionAvailableFunction	(xmlXPathParserContextPtr ctxt, 
int nargs)

Implement the function-available() XSLT function boolean function-available(string)

ctxt:the XPath Parser context
nargs:the number of arguments

Function: xsltGenerateIdFunction

void	xsltGenerateIdFunction		(xmlXPathParserContextPtr ctxt, 
int nargs)

Implement the generate-id() XSLT function string generate-id(node-set?)

ctxt:the XPath Parser context
nargs:the number of arguments

Function: xsltKeyFunction

void	xsltKeyFunction			(xmlXPathParserContextPtr ctxt, 
int nargs)

Implement the key() XSLT function node-set key(string, object)

ctxt:the XPath Parser context
nargs:the number of arguments

Function: xsltRegisterAllFunctions

void	xsltRegisterAllFunctions	(xmlXPathContextPtr ctxt)

Registers all default XSLT functions in this context

ctxt:the XPath context

Function: xsltSystemPropertyFunction

void	xsltSystemPropertyFunction	(xmlXPathParserContextPtr ctxt, 
int nargs)

Implement the system-property() XSLT function object system-property(string)

ctxt:the XPath Parser context
nargs:the number of arguments

Function: xsltUnparsedEntityURIFunction

void	xsltUnparsedEntityURIFunction	(xmlXPathParserContextPtr ctxt, 
int nargs)

Implement the unparsed-entity-uri() XSLT function string unparsed-entity-uri(string)

ctxt:the XPath Parser context
nargs:the number of arguments

Function: xsltXPathFunctionLookup

xmlXPathFunction	xsltXPathFunctionLookup	(xmlXPathContextPtr ctxt, 
const xmlChar * name,
const xmlChar * ns_uri)

This is the entry point when a function is needed by the XPath interpretor.

ctxt:a void * but the XSLT transformation context actually
name:the function name
ns_uri:the function namespace URI
Returns:the callback function or NULL if not found

Daniel Veillard

PK|0]iZ$$html/libxslt-attributes.htmlnu[ Module attributes from libxslt
Action against software patentsGNOME2 LogoW3C logoRed Hat Logo
Made with Libxslt Logo

The XSLT C library for GNOME

Module attributes from libxslt

API Menu
Related links
API Indexes

this module handles the specificities of attribute and attribute groups processing.

Table of Contents

void	xsltApplyAttributeSet		(xsltTransformContextPtr ctxt, 
xmlNodePtr node,
xmlNodePtr inst,
const xmlChar * attrSets)
void	xsltFreeAttributeSetsHashes	(xsltStylesheetPtr style)
void	xsltParseStylesheetAttributeSet	(xsltStylesheetPtr style, 
xmlNodePtr cur)
void	xsltResolveStylesheetAttributeSet	(xsltStylesheetPtr style)

Description

Function: xsltApplyAttributeSet

void	xsltApplyAttributeSet		(xsltTransformContextPtr ctxt, 
xmlNodePtr node,
xmlNodePtr inst,
const xmlChar * attrSets)

Apply the xsl:use-attribute-sets. If @attrSets is NULL, then @inst will be used to exctract this value. If both, @attrSets and @inst, are NULL, then this will do nothing.

ctxt:the XSLT stylesheet
node:the node in the source tree.
inst:the attribute node "xsl:use-attribute-sets"
attrSets:the list of QNames of the attribute-sets to be applied

Function: xsltFreeAttributeSetsHashes

void	xsltFreeAttributeSetsHashes	(xsltStylesheetPtr style)

Free up the memory used by attribute sets

style:an XSLT stylesheet

Function: xsltParseStylesheetAttributeSet

void	xsltParseStylesheetAttributeSet	(xsltStylesheetPtr style, 
xmlNodePtr cur)

parse an XSLT stylesheet attribute-set element

style:the XSLT stylesheet
cur:the "attribute-set" element

Function: xsltResolveStylesheetAttributeSet

void	xsltResolveStylesheetAttributeSet	(xsltStylesheetPtr style)

resolve the references between attribute sets.

style:the XSLT stylesheet

Daniel Veillard

PK|0].2.2html/libxslt-imports.htmlnu[ Module imports from libxslt
Action against software patentsGNOME2 LogoW3C logoRed Hat Logo
Made with Libxslt Logo

The XSLT C library for GNOME

Module imports from libxslt

API Menu
Related links
API Indexes

macros and fuctions needed to implement and access the import tree

Table of Contents

#define XSLT_GET_IMPORT_INT
#define XSLT_GET_IMPORT_PTR
int	xsltFindElemSpaceHandling	(xsltTransformContextPtr ctxt, 
xmlNodePtr node)
xsltTemplatePtr	xsltFindTemplate	(xsltTransformContextPtr ctxt, 
const xmlChar * name,
const xmlChar * nameURI)
int	xsltNeedElemSpaceHandling	(xsltTransformContextPtr ctxt)
xsltStylesheetPtr	xsltNextImport	(xsltStylesheetPtr cur)
int	xsltParseStylesheetImport	(xsltStylesheetPtr style, 
xmlNodePtr cur)
int	xsltParseStylesheetInclude	(xsltStylesheetPtr style, 
xmlNodePtr cur)

Description

Macro: XSLT_GET_IMPORT_INT

#define XSLT_GET_IMPORT_INT

A macro to import intergers from the stylesheet cascading order.

Macro: XSLT_GET_IMPORT_PTR

#define XSLT_GET_IMPORT_PTR

A macro to import pointers from the stylesheet cascading order.

Function: xsltFindElemSpaceHandling

int	xsltFindElemSpaceHandling	(xsltTransformContextPtr ctxt, 
xmlNodePtr node)

Find strip-space or preserve-space informations for an element respect the import precedence or the wildcards

ctxt:an XSLT transformation context
node:an XML node
Returns:1 if space should be stripped, 0 if not, and 2 if everything should be CDTATA wrapped.

Function: xsltFindTemplate

xsltTemplatePtr	xsltFindTemplate	(xsltTransformContextPtr ctxt, 
const xmlChar * name,
const xmlChar * nameURI)

Finds the named template, apply import precedence rule. REVISIT TODO: We'll change the nameURI fields of templates to be in the string dict, so if the specified @nameURI is in the same dict, then use pointer comparison. Check if this can be done in a sane way. Maybe this function is not needed internally at transformation-time if we hard-wire the called templates to the caller.

ctxt:an XSLT transformation context
name:the template name
nameURI:the template name URI
Returns:the xsltTemplatePtr or NULL if not found

Function: xsltNeedElemSpaceHandling

int	xsltNeedElemSpaceHandling	(xsltTransformContextPtr ctxt)

Checks whether that stylesheet requires white-space stripping

ctxt:an XSLT transformation context
Returns:1 if space should be stripped, 0 if not

Function: xsltNextImport

xsltStylesheetPtr	xsltNextImport	(xsltStylesheetPtr cur)

Find the next stylesheet in import precedence.

cur:the current XSLT stylesheet
Returns:the next stylesheet or NULL if it was the last one

Function: xsltParseStylesheetImport

int	xsltParseStylesheetImport	(xsltStylesheetPtr style, 
xmlNodePtr cur)

parse an XSLT stylesheet import element

style:the XSLT stylesheet
cur:the import element
Returns:0 in case of success -1 in case of failure.

Function: xsltParseStylesheetInclude

int	xsltParseStylesheetInclude	(xsltStylesheetPtr style, 
xmlNodePtr cur)

parse an XSLT stylesheet include element

style:the XSLT stylesheet
cur:the include node
Returns:0 in case of success -1 in case of failure

Daniel Veillard

PK|0]T*BABAhtml/libxslt-pattern.htmlnu[ Module pattern from libxslt
Action against software patentsGNOME2 LogoW3C logoRed Hat Logo
Made with Libxslt Logo

The XSLT C library for GNOME

Module pattern from libxslt

API Menu
Related links
API Indexes

the implementation of the lookup of the right template for a given node must be really fast in order to keep decent performances.

Table of Contents

Structure xsltCompMatch
struct _xsltCompMatch The content of this structure is not made public by the API.
Typedef xsltCompMatch * xsltCompMatchPtr
int	xsltAddTemplate			(xsltStylesheetPtr style, 
xsltTemplatePtr cur,
const xmlChar * mode,
const xmlChar * modeURI)
void	xsltCleanupTemplates		(xsltStylesheetPtr style)
xsltCompMatchPtr	xsltCompilePattern	(const xmlChar * pattern, 
xmlDocPtr doc,
xmlNodePtr node,
xsltStylesheetPtr style,
xsltTransformContextPtr runtime)
void	xsltFreeCompMatchList		(xsltCompMatchPtr comp)
void	xsltFreeTemplateHashes		(xsltStylesheetPtr style)
xsltTemplatePtr	xsltGetTemplate		(xsltTransformContextPtr ctxt, 
xmlNodePtr node,
xsltStylesheetPtr style)
int	xsltMatchPattern		(xsltTransformContextPtr ctxt, 
xmlNodePtr node,
const xmlChar * pattern,
xmlDocPtr ctxtdoc,
xmlNodePtr ctxtnode)
void	xsltNormalizeCompSteps		(void * payload, 
void * data,
const xmlChar * name)
int	xsltTestCompMatchList		(xsltTransformContextPtr ctxt, 
xmlNodePtr node,
xsltCompMatchPtr comp)

Description

Structure xsltCompMatch

Structure xsltCompMatch
struct _xsltCompMatch { The content of this structure is not made public by the API. }

Function: xsltAddTemplate

int	xsltAddTemplate			(xsltStylesheetPtr style, 
xsltTemplatePtr cur,
const xmlChar * mode,
const xmlChar * modeURI)

Register the XSLT pattern associated to @cur

style:an XSLT stylesheet
cur:an XSLT template
mode:the mode name or NULL
modeURI:the mode URI or NULL
Returns:-1 in case of error, 0 otherwise

Function: xsltCleanupTemplates

void	xsltCleanupTemplates		(xsltStylesheetPtr style)

Cleanup the state of the templates used by the stylesheet and the ones it imports.

style:an XSLT stylesheet

Function: xsltCompilePattern

xsltCompMatchPtr	xsltCompilePattern	(const xmlChar * pattern, 
xmlDocPtr doc,
xmlNodePtr node,
xsltStylesheetPtr style,
xsltTransformContextPtr runtime)

Compile the XSLT pattern and generates a list of precompiled form suitable for fast matching. [1] Pattern ::= LocationPathPattern | Pattern '|' LocationPathPattern

pattern:an XSLT pattern
doc:the containing document
node:the containing element
style:the stylesheet
runtime:the transformation context, if done at run-time
Returns:the generated pattern list or NULL in case of failure

Function: xsltFreeCompMatchList

void	xsltFreeCompMatchList		(xsltCompMatchPtr comp)

Free up the memory allocated by all the elements of @comp

comp:an XSLT comp list

Function: xsltFreeTemplateHashes

void	xsltFreeTemplateHashes		(xsltStylesheetPtr style)

Free up the memory used by xsltAddTemplate/xsltGetTemplate mechanism

style:an XSLT stylesheet

Function: xsltGetTemplate

xsltTemplatePtr	xsltGetTemplate		(xsltTransformContextPtr ctxt, 
xmlNodePtr node,
xsltStylesheetPtr style)

Finds the template applying to this node, if @style is non-NULL it means one needs to look for the next imported template in scope.

ctxt:a XSLT process context
node:the node being processed
style:the current style
Returns:the xsltTemplatePtr or NULL if not found

Function: xsltMatchPattern

int	xsltMatchPattern		(xsltTransformContextPtr ctxt, 
xmlNodePtr node,
const xmlChar * pattern,
xmlDocPtr ctxtdoc,
xmlNodePtr ctxtnode)

ctxt:
node:
pattern:
ctxtdoc:
ctxtnode:
Returns:

Function: xsltNormalizeCompSteps

void	xsltNormalizeCompSteps		(void * payload, 
void * data,
const xmlChar * name)

This is a hashtable scanner function to normalize the compiled steps of an imported stylesheet.

payload:pointer to template hash table entry
data:pointer to the stylesheet
name:template match name

Function: xsltTestCompMatchList

int	xsltTestCompMatchList		(xsltTransformContextPtr ctxt, 
xmlNodePtr node,
xsltCompMatchPtr comp)

Test whether the node matches one of the patterns in the list

ctxt:a XSLT process context
node:a node
comp:the precompiled pattern list
Returns:1 if it matches, 0 if it doesn't and -1 in case of failure

Daniel Veillard

PK|0]2ԣhtml/libxslt-xsltInternals.htmlnu[ Module xsltInternals from libxslt
Action against software patentsGNOME2 LogoW3C logoRed Hat Logo
Made with Libxslt Logo

The XSLT C library for GNOME

Module xsltInternals from libxslt

API Menu
Related links
API Indexes

Internal data structures, constants and functions used by the XSLT engine. They are not part of the API or ABI, i.e. they can change without prior notice, use carefully.

Table of Contents

#define CHECK_STOPPED
#define CHECK_STOPPED0
#define CHECK_STOPPEDE
#define IS_XSLT_ATTR_FAST
#define IS_XSLT_ELEM_FAST
#define XML_CAST_FPTR
#define XSLT_CCTXT
#define XSLT_FAST_IF
#define XSLT_GET_INTERNAL_NSMAP
#define XSLT_HAS_INTERNAL_NSMAP
#define XSLT_IS_RES_TREE_FRAG
#define XSLT_IS_TEXT_NODE
#define XSLT_ITEM_COMMON_FIELDS
#define XSLT_ITEM_COMPATIBILITY_FIELDS
#define XSLT_ITEM_NAVIGATION_FIELDS
#define XSLT_ITEM_NSINSCOPE_FIELDS
#define XSLT_MARK_RES_TREE_FRAG
#define XSLT_MAX_SORT
#define XSLT_PAT_NO_PRIORITY
#define XSLT_REFACTORED_KEYCOMP
#define XSLT_REFACTORED_VARS
#define XSLT_REFACTORED_XPATHCOMP
#define XSLT_RUNTIME_EXTRA
#define XSLT_RUNTIME_EXTRA_FREE
#define XSLT_RUNTIME_EXTRA_LST
Structure xsltCompilerCtxt
struct _xsltCompilerCtxt
Typedef xsltCompilerCtxt * xsltCompilerCtxtPtr
Structure xsltCompilerNodeInfo
struct _xsltCompilerNodeInfo
Typedef xsltCompilerNodeInfo * xsltCompilerNodeInfoPtr
Structure xsltDecimalFormat
struct _xsltDecimalFormat
Typedef xsltDecimalFormat * xsltDecimalFormatPtr
Structure xsltDocument
struct _xsltDocument
Typedef xsltDocument * xsltDocumentPtr
Structure xsltEffectiveNs
struct _xsltEffectiveNs
Typedef xsltEffectiveNs * xsltEffectiveNsPtr
Structure xsltElemPreComp
struct _xsltElemPreComp
Typedef xsltElemPreComp * xsltElemPreCompPtr
Enum xsltErrorSeverityType
Structure xsltKeyDef
struct _xsltKeyDef
Typedef xsltKeyDef * xsltKeyDefPtr
Structure xsltKeyTable
struct _xsltKeyTable
Typedef xsltKeyTable * xsltKeyTablePtr
Structure xsltNsAlias
struct _xsltNsAlias
Typedef xsltNsAlias * xsltNsAliasPtr
Structure xsltNsList
struct _xsltNsList
Structure xsltNsListContainer
struct _xsltNsListContainer
Typedef xsltNsListContainer * xsltNsListContainerPtr
Typedef xsltNsList * xsltNsListPtr
Structure xsltNsMap
struct _xsltNsMap
Typedef xsltNsMap * xsltNsMapPtr
Enum xsltOutputType
Structure xsltPointerList
struct _xsltPointerList
Typedef xsltPointerList * xsltPointerListPtr
Structure xsltPrincipalStylesheetData
struct _xsltPrincipalStylesheetData
Typedef xsltPrincipalStylesheetData * xsltPrincipalStylesheetDataPtr
Structure xsltRuntimeExtra
struct _xsltRuntimeExtra
Typedef xsltRuntimeExtra * xsltRuntimeExtraPtr
Structure xsltStackElem
struct _xsltStackElem
Typedef xsltStackElem * xsltStackElemPtr
Structure xsltStyleBasicEmptyItem
struct _xsltStyleBasicEmptyItem The content of this structure is not made public by the API.
Typedef xsltStyleBasicEmptyItem * xsltStyleBasicEmptyItemPtr
Structure xsltStyleBasicExpressionItem
struct _xsltStyleBasicExpressionItem
Typedef xsltStyleBasicExpressionItem * xsltStyleBasicExpressionItemPtr
Structure xsltStyleBasicItemVariable
struct _xsltStyleBasicItemVariable
Typedef xsltStyleBasicItemVariable * xsltStyleBasicItemVariablePtr
Typedef xsltStyleBasicEmptyItem xsltStyleItemApplyImports
Typedef xsltStyleItemApplyImports * xsltStyleItemApplyImportsPtr
Structure xsltStyleItemApplyTemplates
struct _xsltStyleItemApplyTemplates
Typedef xsltStyleItemApplyTemplates * xsltStyleItemApplyTemplatesPtr
Structure xsltStyleItemAttribute
struct _xsltStyleItemAttribute
Typedef xsltStyleItemAttribute * xsltStyleItemAttributePtr
Structure xsltStyleItemCallTemplate
struct _xsltStyleItemCallTemplate
Typedef xsltStyleItemCallTemplate * xsltStyleItemCallTemplatePtr
Typedef xsltStyleBasicEmptyItem xsltStyleItemChoose
Typedef xsltStyleItemChoose * xsltStyleItemChoosePtr
Typedef xsltStyleBasicEmptyItem xsltStyleItemComment
Typedef xsltStyleItemComment * xsltStyleItemCommentPtr
Structure xsltStyleItemCopy
struct _xsltStyleItemCopy
Typedef xsltStyleBasicExpressionItem xsltStyleItemCopyOf
Typedef xsltStyleItemCopyOf * xsltStyleItemCopyOfPtr
Typedef xsltStyleItemCopy * xsltStyleItemCopyPtr
Structure xsltStyleItemDocument
struct _xsltStyleItemDocument
Typedef xsltStyleItemDocument * xsltStyleItemDocumentPtr
Structure xsltStyleItemElement
struct _xsltStyleItemElement
Typedef xsltStyleItemElement * xsltStyleItemElementPtr
Structure xsltStyleItemExtElement
struct _xsltStyleItemExtElement
Typedef xsltStyleItemExtElement * xsltStyleItemExtElementPtr
Typedef xsltStyleBasicEmptyItem xsltStyleItemFallback
Typedef xsltStyleItemFallback * xsltStyleItemFallbackPtr
Typedef xsltStyleBasicExpressionItem xsltStyleItemForEach
Typedef xsltStyleItemForEach * xsltStyleItemForEachPtr
Structure xsltStyleItemIf
struct _xsltStyleItemIf
Typedef xsltStyleItemIf * xsltStyleItemIfPtr
Structure xsltStyleItemInclude
struct _xsltStyleItemInclude
Typedef xsltStyleItemInclude * xsltStyleItemIncludePtr
Structure xsltStyleItemLRElementInfo
struct _xsltStyleItemLRElementInfo
Typedef xsltStyleItemLRElementInfo * xsltStyleItemLRElementInfoPtr
Structure xsltStyleItemMessage
struct _xsltStyleItemMessage
Typedef xsltStyleItemMessage * xsltStyleItemMessagePtr
Structure xsltStyleItemNumber
struct _xsltStyleItemNumber
Typedef xsltStyleItemNumber * xsltStyleItemNumberPtr
Structure xsltStyleItemOtherwise
struct _xsltStyleItemOtherwise The content of this structure is not made public by the API.
Typedef xsltStyleItemOtherwise * xsltStyleItemOtherwisePtr
Structure xsltStyleItemPI
struct _xsltStyleItemPI
Typedef xsltStyleItemPI * xsltStyleItemPIPtr
Structure xsltStyleItemParam
struct _xsltStyleItemParam
Typedef xsltStyleItemParam * xsltStyleItemParamPtr
Structure xsltStyleItemSort
struct _xsltStyleItemSort
Typedef xsltStyleItemSort * xsltStyleItemSortPtr
Structure xsltStyleItemText
struct _xsltStyleItemText
Typedef xsltStyleItemText * xsltStyleItemTextPtr
Structure xsltStyleItemUknown
struct _xsltStyleItemUknown The content of this structure is not made public by the API.
Typedef xsltStyleItemUknown * xsltStyleItemUknownPtr
Structure xsltStyleItemValueOf
struct _xsltStyleItemValueOf
Typedef xsltStyleItemValueOf * xsltStyleItemValueOfPtr
Typedef xsltStyleBasicItemVariable xsltStyleItemVariable
Typedef xsltStyleItemVariable * xsltStyleItemVariablePtr
Structure xsltStyleItemWhen
struct _xsltStyleItemWhen
Typedef xsltStyleItemWhen * xsltStyleItemWhenPtr
Typedef xsltStyleBasicItemVariable xsltStyleItemWithParam
Typedef xsltStyleItemWithParam * xsltStyleItemWithParamPtr
Structure xsltStylePreComp
struct _xsltStylePreComp
Typedef xsltStylePreComp * xsltStylePreCompPtr
Enum xsltStyleType
Structure xsltStylesheet
struct _xsltStylesheet
Typedef xsltStylesheet * xsltStylesheetPtr
Structure xsltTemplate
struct _xsltTemplate
Typedef xsltTemplate * xsltTemplatePtr
Structure xsltTransformCache
struct _xsltTransformCache
Typedef xsltTransformCache * xsltTransformCachePtr
Structure xsltTransformContext
struct _xsltTransformContext
Typedef xsltTransformContext * xsltTransformContextPtr
Enum xsltTransformState
Structure xsltVarInfo
struct _xsltVarInfo
Typedef xsltVarInfo * xsltVarInfoPtr
int	xsltAllocateExtra		(xsltStylesheetPtr style)
int	xsltAllocateExtraCtxt		(xsltTransformContextPtr ctxt)
void	xsltCompileAttr			(xsltStylesheetPtr style, 
xmlAttrPtr attr)
xmlDocPtr	xsltCreateRVT		(xsltTransformContextPtr ctxt)
xsltDecimalFormatPtr	xsltDecimalFormatGetByName	(xsltStylesheetPtr style, 
xmlChar * name)
xsltDecimalFormatPtr	xsltDecimalFormatGetByQName	(xsltStylesheetPtr style, 
const xmlChar * nsUri,
const xmlChar * name)
Function type: xsltElemPreCompDeallocator
void	xsltElemPreCompDeallocator	(xsltElemPreCompPtr comp)
xmlChar *	xsltEvalAVT		(xsltTransformContextPtr ctxt, 
void * avt,
xmlNodePtr node)
int	xsltExtensionInstructionResultFinalize	(xsltTransformContextPtr ctxt)
int	xsltExtensionInstructionResultRegister	(xsltTransformContextPtr ctxt, 
xmlXPathObjectPtr obj)
int	xsltFlagRVTs			(xsltTransformContextPtr ctxt, 
xmlXPathObjectPtr obj,
void * val)
xmlXPathError	xsltFormatNumberConversion	(xsltDecimalFormatPtr self, 
xmlChar * format,
double number,
xmlChar ** result)
void	xsltFreeAVTList			(void * avt)
void	xsltFreeRVTs			(xsltTransformContextPtr ctxt)
void	xsltFreeStackElemList		(xsltStackElemPtr elem)
void	xsltFreeStylesheet		(xsltStylesheetPtr style)
int	xsltInitAllDocKeys		(xsltTransformContextPtr ctxt)
int	xsltInitCtxtKey			(xsltTransformContextPtr ctxt, 
xsltDocumentPtr idoc,
xsltKeyDefPtr keyDef)
int	xsltIsBlank			(xmlChar * str)
xsltStylesheetPtr	xsltLoadStylesheetPI	(xmlDocPtr doc)
xsltStylesheetPtr	xsltNewStylesheet	(void)
void	xsltNumberFormat		(xsltTransformContextPtr ctxt, 
xsltNumberDataPtr data,
xmlNodePtr node)
int	xsltParseAnyXSLTElem		(xsltCompilerCtxtPtr cctxt, 
xmlNodePtr elem)
void	xsltParseSequenceConstructor	(xsltCompilerCtxtPtr cctxt, 
xmlNodePtr cur)
xsltStylesheetPtr	xsltParseStylesheetDoc	(xmlDocPtr doc)
xsltStylesheetPtr	xsltParseStylesheetFile	(const xmlChar * filename)
xsltStylesheetPtr	xsltParseStylesheetImportedDoc	(xmlDocPtr doc, 
xsltStylesheetPtr parentStyle)
void	xsltParseStylesheetOutput	(xsltStylesheetPtr style, 
xmlNodePtr cur)
xsltStylesheetPtr	xsltParseStylesheetProcess	(xsltStylesheetPtr ret, 
xmlDocPtr doc)
void	xsltParseTemplateContent	(xsltStylesheetPtr style, 
xmlNodePtr templ)
int	xsltPointerListAddSize		(xsltPointerListPtr list, 
void * item,
int initialSize)
void	xsltPointerListClear		(xsltPointerListPtr list)
xsltPointerListPtr	xsltPointerListCreate	(int initialSize)
void	xsltPointerListFree		(xsltPointerListPtr list)
int	xsltRegisterLocalRVT		(xsltTransformContextPtr ctxt, 
xmlDocPtr RVT)
int	xsltRegisterPersistRVT		(xsltTransformContextPtr ctxt, 
xmlDocPtr RVT)
int	xsltRegisterTmpRVT		(xsltTransformContextPtr ctxt, 
xmlDocPtr RVT)
void	xsltReleaseRVT			(xsltTransformContextPtr ctxt, 
xmlDocPtr RVT)
int	xsltRestoreDocumentNamespaces	(xsltNsMapPtr ns, 
xmlDocPtr doc)
Function type: xsltSortFunc
void	xsltSortFunc			(xsltTransformContextPtr ctxt, 
xmlNodePtr * sorts,
int nbsorts)
Function type: xsltTransformFunction
void	xsltTransformFunction		(xsltTransformContextPtr ctxt, 
xmlNodePtr node,
xmlNodePtr inst,
xsltElemPreCompPtr comp)
void	xsltUninit			(void)

Description

Macro: CHECK_STOPPED

#define CHECK_STOPPED

Macro to check if the XSLT processing should be stopped. Will return from the function.

Macro: CHECK_STOPPED0

#define CHECK_STOPPED0

Macro to check if the XSLT processing should be stopped. Will return from the function with a 0 value.

Macro: CHECK_STOPPEDE

#define CHECK_STOPPEDE

Macro to check if the XSLT processing should be stopped. Will goto the error: label.

Macro: IS_XSLT_ATTR_FAST

#define IS_XSLT_ATTR_FAST

quick check for xslt namespace attribute

Macro: IS_XSLT_ELEM_FAST

#define IS_XSLT_ELEM_FAST

quick check whether this is an xslt element

Macro: XML_CAST_FPTR

#define XML_CAST_FPTR

Macro to do a casting from an object pointer to a function pointer without encountering a warning from gcc #define XML_CAST_FPTR(fptr) (*(void **)(&fptr)) This macro violated ISO C aliasing rules (gcc4 on s390 broke) so it is disabled now

Macro: XSLT_CCTXT

#define XSLT_CCTXT

get pointer to compiler context

Macro: XSLT_FAST_IF

#define XSLT_FAST_IF

Internal define to enable usage of xmlXPathCompiledEvalToBoolean() for XSLT "tests"; e.g. in <xsl:if test="/foo/bar">

Macro: XSLT_GET_INTERNAL_NSMAP

#define XSLT_GET_INTERNAL_NSMAP

get pointer to namespace map

Macro: XSLT_HAS_INTERNAL_NSMAP

#define XSLT_HAS_INTERNAL_NSMAP

check for namespace mapping

Macro: XSLT_IS_RES_TREE_FRAG

#define XSLT_IS_RES_TREE_FRAG

internal macro to test tree fragments

Macro: XSLT_IS_TEXT_NODE

#define XSLT_IS_TEXT_NODE

check if the argument is a text node

Macro: XSLT_ITEM_COMMON_FIELDS

#define XSLT_ITEM_COMMON_FIELDS

Common fields used for all items.

Macro: XSLT_ITEM_COMPATIBILITY_FIELDS

#define XSLT_ITEM_COMPATIBILITY_FIELDS

Fields for API compatibility to the structure _xsltElemPreComp which is used for extension functions. Note that @next is used for storage; it does not reflect a next sibling in the tree. TODO: Evaluate if we really need such a compatibility.

Macro: XSLT_ITEM_NAVIGATION_FIELDS

#define XSLT_ITEM_NAVIGATION_FIELDS

Currently empty. TODO: It is intended to hold navigational fields in the future.

Macro: XSLT_ITEM_NSINSCOPE_FIELDS

#define XSLT_ITEM_NSINSCOPE_FIELDS

The in-scope namespaces.

Macro: XSLT_MARK_RES_TREE_FRAG

#define XSLT_MARK_RES_TREE_FRAG

internal macro to set up tree fragments

Macro: XSLT_MAX_SORT

#define XSLT_MAX_SORT

Max number of specified xsl:sort on an element.

Macro: XSLT_PAT_NO_PRIORITY

#define XSLT_PAT_NO_PRIORITY

Specific value for pattern without priority expressed.

Macro: XSLT_REFACTORED_KEYCOMP

#define XSLT_REFACTORED_KEYCOMP

Internal define to enable on-demand xsl:key computation. That's the only mode now but the define is kept for compatibility

Macro: XSLT_REFACTORED_VARS

#define XSLT_REFACTORED_VARS

Internal define to enable the refactored variable part of libxslt

Macro: XSLT_REFACTORED_XPATHCOMP

#define XSLT_REFACTORED_XPATHCOMP

Internal define to enable the optimization of the compilation of XPath expressions.

Macro: XSLT_RUNTIME_EXTRA

#define XSLT_RUNTIME_EXTRA

Macro used to define extra information stored in the context

Macro: XSLT_RUNTIME_EXTRA_FREE

#define XSLT_RUNTIME_EXTRA_FREE

Macro used to free extra information stored in the context

Macro: XSLT_RUNTIME_EXTRA_LST

#define XSLT_RUNTIME_EXTRA_LST

Macro used to access extra information stored in the context

Structure xsltCompilerCtxt

Structure xsltCompilerCtxt
struct _xsltCompilerCtxt { void * errorCtxt : * used for error/warning reports; e.g. X xsltErrorSeverityType errSeverity int warnings : TODO: number of warnings found at compi int errors : TODO: number of errors found at compila xmlDictPtr dict xsltStylesheetPtr style int simplified : whether this is a simplified stylesheet int depth : Current depth of processing xsltCompilerNodeInfoPtr inode xsltCompilerNodeInfoPtr inodeList xsltCompilerNodeInfoPtr inodeLast xsltPointerListPtr tmpList : * The XSLT version as specified by the s int isInclude int hasForwardsCompat : whether forwards-compatible mode was us int maxNodeInfos : TEMP TODO: just for the interest int maxLREs : * In order to keep the old behaviour, ap int strict xsltPrincipalStylesheetDataPtr psData xmlXPathContextPtr xpathCtxt xsltStyleItemUknownPtr unknownItem int hasNsAliases : Indicator if there was an xsl:namespace xsltNsAliasPtr nsAliases xsltVarInfoPtr ivars : Storage of local in-scope variables/par xsltVarInfoPtr ivar : topmost local variable/param. }

Structure xsltCompilerNodeInfo

Structure xsltCompilerNodeInfo
struct _xsltCompilerNodeInfo { xsltCompilerNodeInfoPtr next xsltCompilerNodeInfoPtr prev xmlNodePtr node int depth xsltTemplatePtr templ : The owning template int category : XSLT element, LR-element or extension e xsltStyleType type xsltElemPreCompPtr item : The compiled information The current in xsltNsListContainerPtr inScopeNs : The current excluded result namespaces xsltPointerListPtr exclResultNs : The current extension instruction names xsltPointerListPtr extElemNs : The current info for literal result ele xsltStyleItemLRElementInfoPtr litResElemInfo : * Set to 1 if in-scope namespaces change int nsChanged int preserveWhitespace int stripWhitespace int isRoot : whether this is the stylesheet's root n int forwardsCompat : whether forwards-compatible mode is ena int extContentHandled : the type of the current child xsltStyleType curChildType }

Structure xsltDecimalFormat

Structure xsltDecimalFormat
struct _xsltDecimalFormat { struct _xsltDecimalFormat * next : chained list xmlChar * name : Used for interpretation of pattern xmlChar * digit xmlChar * patternSeparator : May appear in result xmlChar * minusSign xmlChar * infinity xmlChar * noNumber : Not-a-number Used for interpretation of xmlChar * decimalPoint xmlChar * grouping xmlChar * percent xmlChar * permille xmlChar * zeroDigit const xmlChar * nsUri }

Structure xsltDocument

Structure xsltDocument
struct _xsltDocument { struct _xsltDocument * next : documents are kept in a chained list int main : is this the main document xmlDocPtr doc : the parsed document void * keys : key tables storage struct _xsltDocument * includes : subsidiary includes int preproc : pre-processing already done int nbKeysComputed }

Structure xsltEffectiveNs

Structure xsltEffectiveNs
struct _xsltEffectiveNs { xsltEffectiveNsPtr nextInStore : storage next xsltEffectiveNsPtr next : next item in the list const xmlChar * prefix const xmlChar * nsName : * Indicates if eclared on the literal re int holdByElem }

Structure xsltElemPreComp

Structure xsltElemPreComp
struct _xsltElemPreComp { xsltElemPreCompPtr next : next item in the global chained list ho xsltStyleType type : type of the element xsltTransformFunction func : handling function xmlNodePtr inst : the node in the stylesheet's tree corre xsltElemPreCompDeallocator free : the deallocator }

Enum xsltErrorSeverityType

Enum xsltErrorSeverityType {
    XSLT_ERROR_SEVERITY_ERROR = 0
    XSLT_ERROR_SEVERITY_WARNING = 1
}

Structure xsltKeyDef

Structure xsltKeyDef
struct _xsltKeyDef { struct _xsltKeyDef * next xmlNodePtr inst xmlChar * name xmlChar * nameURI xmlChar * match xmlChar * use xmlXPathCompExprPtr comp xmlXPathCompExprPtr usecomp xmlNsPtr * nsList : the namespaces in scope int nsNr : the number of namespaces in scope }

Structure xsltKeyTable

Structure xsltKeyTable
struct _xsltKeyTable { struct _xsltKeyTable * next xmlChar * name xmlChar * nameURI xmlHashTablePtr keys }

Structure xsltNsAlias

Structure xsltNsAlias
struct _xsltNsAlias { xsltNsAliasPtr next : next in the list xmlNsPtr literalNs xmlNsPtr targetNs xmlDocPtr docOfTargetNs }

Structure xsltNsList

Structure xsltNsList
struct _xsltNsList { xsltNsListPtr next : next in the list xmlNsPtr ns }

Structure xsltNsListContainer

Structure xsltNsListContainer
struct _xsltNsListContainer { xmlNsPtr * list int totalNumber int xpathNumber }

Structure xsltNsMap

Structure xsltNsMap
struct _xsltNsMap { xsltNsMapPtr next : next in the list xmlDocPtr doc xmlNodePtr elem : the element holding the ns-decl xmlNsPtr ns : the xmlNs structure holding the XML nam const xmlChar * origNsName : the original XML namespace name const xmlChar * newNsName : the mapped XML namespace name }

Enum xsltOutputType

Enum xsltOutputType {
    XSLT_OUTPUT_XML = 0
    XSLT_OUTPUT_HTML = 1
    XSLT_OUTPUT_TEXT = 2
}

Structure xsltPointerList

Structure xsltPointerList
struct _xsltPointerList { void ** items int number int size }

Structure xsltPrincipalStylesheetData

Structure xsltPrincipalStylesheetData
struct _xsltPrincipalStylesheetData { xmlDictPtr namespaceDict : * Global list of in-scope namespaces. * xsltPointerListPtr inScopeNamespaces : * Global list of information for [xsl:]e xsltPointerListPtr exclResultNamespaces : * Global list of information for [xsl:]e xsltPointerListPtr extElemNamespaces xsltEffectiveNsPtr effectiveNs : * Namespace name map to get rid of strin xsltNsMapPtr nsMap }

Structure xsltRuntimeExtra

Structure xsltRuntimeExtra
struct _xsltRuntimeExtra { void * info : pointer to the extra data xmlFreeFunc deallocate : pointer to the deallocation routine }

Structure xsltStackElem

Structure xsltStackElem
struct _xsltStackElem { struct _xsltStackElem * next : chained list xsltStylePreCompPtr comp : the compiled form int computed : was the evaluation done const xmlChar * name : the local part of the name QName const xmlChar * nameURI : the URI part of the name QName const xmlChar * select : the eval string xmlNodePtr tree : the sequence constructor if no eval str xmlXPathObjectPtr value : The value if computed xmlDocPtr fragment : The Result Tree Fragments (needed for X int level : the depth in the tree; -1 if persistent xsltTransformContextPtr context : The transformation context; needed to c int flags }

Structure xsltStyleBasicEmptyItem

Structure xsltStyleBasicEmptyItem
struct _xsltStyleBasicEmptyItem { The content of this structure is not made public by the API. }

Structure xsltStyleBasicExpressionItem

Structure xsltStyleBasicExpressionItem
struct _xsltStyleBasicExpressionItem { const xmlChar * select : TODO: Change this to "expression". xmlXPathCompExprPtr comp : TODO: Change this to compExpr. }

Structure xsltStyleBasicItemVariable

Structure xsltStyleBasicItemVariable
struct _xsltStyleBasicItemVariable { const xmlChar * select xmlXPathCompExprPtr comp const xmlChar * name int has_name const xmlChar * ns int has_ns }

Structure xsltStyleItemApplyTemplates

Structure xsltStyleItemApplyTemplates
struct _xsltStyleItemApplyTemplates { const xmlChar * mode : apply-templates const xmlChar * modeURI : apply-templates const xmlChar * select : sort, copy-of, value-of, apply-template xmlXPathCompExprPtr comp : a precompiled XPath expression TODO: wi }

Structure xsltStyleItemAttribute

Structure xsltStyleItemAttribute
struct _xsltStyleItemAttribute { const xmlChar * name int has_name const xmlChar * ns const xmlChar * nsPrefix int has_ns }

Structure xsltStyleItemCallTemplate

Structure xsltStyleItemCallTemplate
struct _xsltStyleItemCallTemplate { xsltTemplatePtr templ : call-template const xmlChar * name : element, attribute, pi int has_name : element, attribute, pi const xmlChar * ns : element int has_ns : element TODO: with-params }

Structure xsltStyleItemCopy

Structure xsltStyleItemCopy
struct _xsltStyleItemCopy { const xmlChar * use : copy, element int has_use : copy, element }

Structure xsltStyleItemDocument

Structure xsltStyleItemDocument
struct _xsltStyleItemDocument { int ver11 : assigned: in xsltDocumentComp; read: no const xmlChar * filename : document URL int has_filename }

Structure xsltStyleItemElement

Structure xsltStyleItemElement
struct _xsltStyleItemElement { const xmlChar * use int has_use const xmlChar * name int has_name const xmlChar * ns const xmlChar * nsPrefix int has_ns }

Structure xsltStyleItemExtElement

Structure xsltStyleItemExtElement
struct _xsltStyleItemExtElement { xsltElemPreCompPtr item }

Structure xsltStyleItemIf

Structure xsltStyleItemIf
struct _xsltStyleItemIf { const xmlChar * test : if xmlXPathCompExprPtr comp : a precompiled XPath expression }

Structure xsltStyleItemInclude

Structure xsltStyleItemInclude
struct _xsltStyleItemInclude { xsltDocumentPtr include }

Structure xsltStyleItemLRElementInfo

Structure xsltStyleItemLRElementInfo
struct _xsltStyleItemLRElementInfo { xsltEffectiveNsPtr effectiveNs }

Structure xsltStyleItemMessage

Structure xsltStyleItemMessage
struct _xsltStyleItemMessage { int terminate }

Structure xsltStyleItemNumber

Structure xsltStyleItemNumber
struct _xsltStyleItemNumber { xsltNumberData numdata : number }

Structure xsltStyleItemOtherwise

Structure xsltStyleItemOtherwise
struct _xsltStyleItemOtherwise { The content of this structure is not made public by the API. }

Structure xsltStyleItemPI

Structure xsltStyleItemPI
struct _xsltStyleItemPI { const xmlChar * name int has_name }

Structure xsltStyleItemParam

Structure xsltStyleItemParam
struct _xsltStyleItemParam { const xmlChar * select xmlXPathCompExprPtr comp const xmlChar * name int has_name const xmlChar * ns int has_ns }

Structure xsltStyleItemSort

Structure xsltStyleItemSort
struct _xsltStyleItemSort { const xmlChar * stype : sort int has_stype : sort int number : sort const xmlChar * order : sort int has_order : sort int descending : sort const xmlChar * lang : sort int has_lang : sort xsltLocale locale : sort const xmlChar * case_order : sort int lower_first : sort const xmlChar * use int has_use const xmlChar * select : sort, copy-of, value-of, apply-template xmlXPathCompExprPtr comp : a precompiled XPath expression }

Structure xsltStyleItemText

Structure xsltStyleItemText
struct _xsltStyleItemText { int noescape : text }

Structure xsltStyleItemUknown

Structure xsltStyleItemUknown
struct _xsltStyleItemUknown { The content of this structure is not made public by the API. }

Structure xsltStyleItemValueOf

Structure xsltStyleItemValueOf
struct _xsltStyleItemValueOf { const xmlChar * select xmlXPathCompExprPtr comp : a precompiled XPath expression int noescape }

Structure xsltStyleItemWhen

Structure xsltStyleItemWhen
struct _xsltStyleItemWhen { const xmlChar * test xmlXPathCompExprPtr comp }

Structure xsltStylePreComp

Structure xsltStylePreComp
struct _xsltStylePreComp { xsltElemPreCompPtr next : chained list xsltStyleType type : type of the element xsltTransformFunction func : handling function xmlNodePtr inst : * Pre computed values. * const xmlChar * stype : sort int has_stype : sort int number : sort const xmlChar * order : sort int has_order : sort int descending : sort const xmlChar * lang : sort int has_lang : sort xsltLocale locale : sort const xmlChar * case_order : sort int lower_first : sort const xmlChar * use : copy, element int has_use : copy, element int noescape : text const xmlChar * name : element, attribute, pi int has_name : element, attribute, pi const xmlChar * ns : element int has_ns : element const xmlChar * mode : apply-templates const xmlChar * modeURI : apply-templates const xmlChar * test : if xsltTemplatePtr templ : call-template const xmlChar * select : sort, copy-of, value-of, apply-template int ver11 : document const xmlChar * filename : document URL int has_filename : document xsltNumberData numdata : number xmlXPathCompExprPtr comp : a precompiled XPath expression xmlNsPtr * nsList : the namespaces in scope int nsNr : the number of namespaces in scope }

Enum xsltStyleType

Enum xsltStyleType {
    XSLT_FUNC_COPY = 1
    XSLT_FUNC_SORT = 2
    XSLT_FUNC_TEXT = 3
    XSLT_FUNC_ELEMENT = 4
    XSLT_FUNC_ATTRIBUTE = 5
    XSLT_FUNC_COMMENT = 6
    XSLT_FUNC_PI = 7
    XSLT_FUNC_COPYOF = 8
    XSLT_FUNC_VALUEOF = 9
    XSLT_FUNC_NUMBER = 10
    XSLT_FUNC_APPLYIMPORTS = 11
    XSLT_FUNC_CALLTEMPLATE = 12
    XSLT_FUNC_APPLYTEMPLATES = 13
    XSLT_FUNC_CHOOSE = 14
    XSLT_FUNC_IF = 15
    XSLT_FUNC_FOREACH = 16
    XSLT_FUNC_DOCUMENT = 17
    XSLT_FUNC_WITHPARAM = 18
    XSLT_FUNC_PARAM = 19
    XSLT_FUNC_VARIABLE = 20
    XSLT_FUNC_WHEN = 21
    XSLT_FUNC_EXTENSION = 22
    XSLT_FUNC_OTHERWISE = 23
    XSLT_FUNC_FALLBACK = 24
    XSLT_FUNC_MESSAGE = 25
    XSLT_FUNC_INCLUDE = 26
    XSLT_FUNC_ATTRSET = 27
    XSLT_FUNC_LITERAL_RESULT_ELEMENT = 28
    XSLT_FUNC_UNKOWN_FORWARDS_COMPAT = 29
}

Structure xsltStylesheet

Structure xsltStylesheet
struct _xsltStylesheet { struct _xsltStylesheet * parent struct _xsltStylesheet * next struct _xsltStylesheet * imports xsltDocumentPtr docList : * General data on the style sheet docume xmlDocPtr doc : the parsed XML stylesheet xmlHashTablePtr stripSpaces : the hash table of the strip-space and p int stripAll : strip-space * (1) preserve-space * (-1) xmlHashTablePtr cdataSection : * Global variable or parameters. * xsltStackElemPtr variables : * Template descriptions. * xsltTemplatePtr templates : the ordered list of templates void * templatesHash : hash table or wherever compiled templat void * rootMatch : template based on / void * keyMatch : template based on key() void * elemMatch : template based on * void * attrMatch : template based on @* void * parentMatch : template based on .. void * textMatch : template based on text() void * piMatch : template based on processing-instructio void * commentMatch : * Namespace aliases. * NOTE: Not used in xmlHashTablePtr nsAliases : * Attribute sets. * xmlHashTablePtr attributeSets : * Namespaces. * TODO: Eliminate this. * xmlHashTablePtr nsHash : the set of namespaces in use: ATTENTION void * nsDefs : * Key definitions. * void * keys : * Output related stuff. * xmlChar * method : the output method xmlChar * methodURI : associated namespace if any xmlChar * version : version string xmlChar * encoding : encoding string int omitXmlDeclaration : * Number formatting. * xsltDecimalFormatPtr decimalFormat int standalone : standalone = "yes" | "no" xmlChar * doctypePublic : doctype-public string xmlChar * doctypeSystem : doctype-system string int indent : should output being indented xmlChar * mediaType : * Precomputed blocks. * xsltElemPreCompPtr preComps : list of precomputed blocks int warnings : number of warnings found at compilation int errors : number of errors found at compilation xmlChar * exclPrefix : last excluded prefixes xmlChar ** exclPrefixTab : array of excluded prefixes int exclPrefixNr : number of excluded prefixes in scope int exclPrefixMax : size of the array void * _private : * Extensions. * xmlHashTablePtr extInfos : the extension data int extrasNr : * For keeping track of nested includes * xsltDocumentPtr includes : * dictionary: shared between stylesheet, xmlDictPtr dict : * precompiled attribute value templates. void * attVTs : * if namespace-alias has an alias for th const xmlChar * defaultAlias : * bypass pre-processing (already done) ( int nopreproc : * all document text strings were interna int internalized : * Literal Result Element as Stylesheet c int literal_result : * The principal stylesheet * xsltStylesheetPtr principal : * Compilation context used during compil xsltCompilerCtxtPtr compCtxt : TODO: Change this to (void *). xsltPrincipalStylesheetDataPtr principalData : * Forwards-compatible processing * int forwards_compatible xmlHashTablePtr namedTemplates : hash table of named templates }

Structure xsltTemplate

Structure xsltTemplate
struct _xsltTemplate { struct _xsltTemplate * next : chained list sorted by priority struct _xsltStylesheet * style : the containing stylesheet xmlChar * match : the matching string float priority : as given from the stylesheet, not compu const xmlChar * name : the local part of the name QName const xmlChar * nameURI : the URI part of the name QName const xmlChar * mode : the local part of the mode QName const xmlChar * modeURI : the URI part of the mode QName xmlNodePtr content : the template replacement value xmlNodePtr elem : * TODO: @inheritedNsNr and @inheritedNs int inheritedNsNr : number of inherited namespaces xmlNsPtr * inheritedNs : inherited non-excluded namespaces Profi int nbCalls : the number of time the template was cal unsigned long time : the time spent in this template void * params : xsl:param instructions int templNr : Nb of templates in the stack int templMax : Size of the templtes stack xsltTemplatePtr * templCalledTab : templates called int * templCountTab : .. and how often }

Structure xsltTransformCache

Structure xsltTransformCache
struct _xsltTransformCache { xmlDocPtr RVT int nbRVT xsltStackElemPtr stackItems int nbStackItems int dbgCachedRVTs int dbgReusedRVTs int dbgCachedVars int dbgReusedVars }

Structure xsltTransformContext

Structure xsltTransformContext
struct _xsltTransformContext { xsltStylesheetPtr style : the stylesheet used xsltOutputType type : the type of output xsltTemplatePtr templ : the current template int templNr : Nb of templates in the stack int templMax : Size of the templtes stack xsltTemplatePtr * templTab : the template stack xsltStackElemPtr vars : the current variable list int varsNr : Nb of variable list in the stack int varsMax : Size of the variable list stack xsltStackElemPtr * varsTab : the variable list stack int varsBase : * Extensions * xmlHashTablePtr extFunctions : the extension functions xmlHashTablePtr extElements : the extension elements xmlHashTablePtr extInfos : the extension data const xmlChar * mode : the current mode const xmlChar * modeURI : the current mode URI xsltDocumentPtr docList : the document list xsltDocumentPtr document : the current source document; can be NUL xmlNodePtr node : the current node being processed xmlNodeSetPtr nodeList : the current node list xmlNodePtr curren xmlDocPtr output : the resulting document xmlNodePtr insert : the insertion node xmlXPathContextPtr xpathCtxt : the XPath context xsltTransformState state : * Global variables * xmlHashTablePtr globalVars : the global variables and params xmlNodePtr inst : the instruction in the stylesheet int xinclude : should XInclude be processed const char * outputFile : the output URI if known int profile : is this run profiled long prof : the current profiled value int profNr : Nb of templates in the stack int profMax : Size of the templtaes stack long * profTab : the profile template stack void * _private : user defined data int extrasNr : the number of extras used int extrasMax : the number of extras allocated xsltRuntimeExtraPtr extras : extra per runtime informations xsltDocumentPtr styleList : the stylesheet docs list void * sec : the security preferences if any xmlGenericErrorFunc error : a specific error handler void * errctx : context for the error handler xsltSortFunc sortfunc : * handling of temporary Result Value Tre xmlDocPtr tmpRVT : list of RVT without persistance xmlDocPtr persistRVT : list of persistant RVTs int ctxtflags : * Speed optimization when coalescing tex const xmlChar * lasttext : last text node content int lasttsize : last text node size int lasttuse : * Per Context Debugging * int debugStatus : the context level debug status unsigned long * traceCode : pointer to the variable holding the mas int parserOptions : * dictionary: shared between stylesheet, xmlDictPtr dict xmlDocPtr tmpDoc : * all document text strings are internal int internalized int nbKeys int hasTemplKeyPatterns xsltTemplatePtr currentTemplateRule : the Current Template Rule xmlNodePtr initialContextNode xmlDocPtr initialContextDoc xsltTransformCachePtr cache void * contextVariable : the current variable item xmlDocPtr localRVT : list of local tree fragments; will be f xmlDocPtr localRVTBase : Obsolete int keyInitLevel : Needed to catch recursive keys issues int depth : Needed to catch recursions int maxTemplateDepth int maxTemplateVars }

Enum xsltTransformState

Enum xsltTransformState {
    XSLT_STATE_OK = 0
    XSLT_STATE_ERROR = 1
    XSLT_STATE_STOPPED = 2
}

Structure xsltVarInfo

Structure xsltVarInfo
struct _xsltVarInfo { xsltVarInfoPtr next : next in the list xsltVarInfoPtr prev int depth : the depth in the tree const xmlChar * name const xmlChar * nsName }

Function: xsltAllocateExtra

int	xsltAllocateExtra		(xsltStylesheetPtr style)

Allocate an extra runtime information slot statically while compiling the stylesheet and return its number

style:an XSLT stylesheet
Returns:the number of the slot

Function: xsltAllocateExtraCtxt

int	xsltAllocateExtraCtxt		(xsltTransformContextPtr ctxt)

Allocate an extra runtime information slot at run-time and return its number This make sure there is a slot ready in the transformation context

ctxt:an XSLT transformation context
Returns:the number of the slot

Function: xsltCompileAttr

void	xsltCompileAttr			(xsltStylesheetPtr style, 
xmlAttrPtr attr)

Precompile an attribute in a stylesheet, basically it checks if it is an attrubute value template, and if yes establish some structures needed to process it at transformation time.

style:a XSLT process context
attr:the attribute coming from the stylesheet.

Function: xsltCreateRVT

xmlDocPtr	xsltCreateRVT		(xsltTransformContextPtr ctxt)

Creates a Result Value Tree (the XSLT 1.0 term for this is "Result Tree Fragment")

ctxt:an XSLT transformation context
Returns:the result value tree or NULL in case of API or internal errors.

Function: xsltDecimalFormatGetByName

xsltDecimalFormatPtr	xsltDecimalFormatGetByName	(xsltStylesheetPtr style, 
xmlChar * name)

Find decimal-format by name

style:the XSLT stylesheet
name:the decimal-format name to find
Returns:the xsltDecimalFormatPtr

Function: xsltDecimalFormatGetByQName

xsltDecimalFormatPtr	xsltDecimalFormatGetByQName	(xsltStylesheetPtr style, 
const xmlChar * nsUri,
const xmlChar * name)

Find decimal-format by QName

style:the XSLT stylesheet
nsUri:the namespace URI of the QName
name:the local part of the QName
Returns:the xsltDecimalFormatPtr

Function type: xsltElemPreCompDeallocator

Function type: xsltElemPreCompDeallocator
void	xsltElemPreCompDeallocator	(xsltElemPreCompPtr comp)

Deallocates an #xsltElemPreComp structure.

comp:the #xsltElemPreComp to free up

Function: xsltEvalAVT

xmlChar *	xsltEvalAVT		(xsltTransformContextPtr ctxt, 
void * avt,
xmlNodePtr node)

Process the given AVT, and return the new string value.

ctxt:the XSLT transformation context
avt:the prevompiled attribute value template info
node:the node hosting the attribute
Returns:the computed string value or NULL, must be deallocated by the caller.

Function: xsltExtensionInstructionResultFinalize

int	xsltExtensionInstructionResultFinalize	(xsltTransformContextPtr ctxt)

Finalizes the data (e.g. result tree fragments) created within a value-returning process (e.g. EXSLT's function). Tree fragments marked as being returned by a function are set to normal state, which means that the fragment garbage collector will free them after the function-calling process exits.

ctxt:an XSLT transformation context
Returns:0 in case of success and -1 in case of API or internal errors. This function is unsupported in newer releases of libxslt.

Function: xsltExtensionInstructionResultRegister

int	xsltExtensionInstructionResultRegister	(xsltTransformContextPtr ctxt, 
xmlXPathObjectPtr obj)

Marks the result of a value-returning extension instruction in order to avoid it being garbage collected before the extension instruction exits. Note that one still has to additionally register any newly created tree fragments (via xsltCreateRVT()) with xsltRegisterLocalRVT().

ctxt:an XSLT transformation context
obj:an XPath object to be inspected for result tree fragments
Returns:0 in case of success and -1 in case of error. It isn't necessary to call this function in newer releases of libxslt.

Function: xsltFlagRVTs

int	xsltFlagRVTs			(xsltTransformContextPtr ctxt, 
xmlXPathObjectPtr obj,
void * val)

Updates ownership information of RVTs in @obj according to @val. @val = XSLT_RVT_FUNC_RESULT for the result of an extension function, so its RVTs won't be destroyed after leaving the returning scope. @val = XSLT_RVT_LOCAL for the result of an extension function to reset the state of its RVTs after it was returned to a new scope. @val = XSLT_RVT_GLOBAL for parts of global variables.

ctxt:an XSLT transformation context
obj:an XPath object to be inspected for result tree fragments
val:the flag value
Returns:0 in case of success and -1 in case of error.

Function: xsltFormatNumberConversion

xmlXPathError	xsltFormatNumberConversion	(xsltDecimalFormatPtr self, 
xmlChar * format,
double number,
xmlChar ** result)

format-number() uses the JDK 1.1 DecimalFormat class: http://java.sun.com/products/jdk/1.1/docs/api/java.text.DecimalFormat.html Structure: pattern := subpattern{;subpattern} subpattern := {prefix}integer{.fraction}{suffix} prefix := '\\u0000'..'\\uFFFD' - specialCharacters suffix := '\\u0000'..'\\uFFFD' - specialCharacters integer := '#'* '0'* '0' fraction := '0'* '#'* Notation: X* 0 or more instances of X (X | Y) either X or Y. X..Y any character from X up to Y, inclusive. S - T characters in S, except those in T Special Characters: Symbol Meaning 0 a digit # a digit, zero shows as absent . placeholder for decimal separator , placeholder for grouping separator. ; separates formats. - default negative prefix. % multiply by 100 and show as percentage ? multiply by 1000 and show as per mille X any other characters can be used in the prefix or suffix ' used to quote special characters in a prefix or suffix.

self:the decimal format
format:the format requested
number:the value to format
result:the place to ouput the result
Returns:a possible XPath error

Function: xsltFreeAVTList

void	xsltFreeAVTList			(void * avt)

Free up the memory associated to the attribute value templates

avt:pointer to an list of AVT structures

Function: xsltFreeRVTs

void	xsltFreeRVTs			(xsltTransformContextPtr ctxt)

Frees all registered result value trees (Result Tree Fragments) of the transformation. Internal function; should not be called by user-code.

ctxt:an XSLT transformation context

Function: xsltFreeStackElemList

void	xsltFreeStackElemList		(xsltStackElemPtr elem)

Free up the memory allocated by @elem

elem:an XSLT stack element

Function: xsltFreeStylesheet

void	xsltFreeStylesheet		(xsltStylesheetPtr style)

Free up the memory allocated by @style

style:an XSLT stylesheet

Function: xsltInitAllDocKeys

int	xsltInitAllDocKeys		(xsltTransformContextPtr ctxt)

INTERNAL ROUTINE ONLY Check if any keys on the current document need to be computed

ctxt:transformation context
Returns:0 in case of success, -1 in case of failure

Function: xsltInitCtxtKey

int	xsltInitCtxtKey			(xsltTransformContextPtr ctxt, 
xsltDocumentPtr idoc,
xsltKeyDefPtr keyDef)

Computes the key tables this key and for the current input document.

ctxt:an XSLT transformation context
idoc:the document information (holds key values)
keyDef:the key definition
Returns:0 on success, -1 on error

Function: xsltIsBlank

int	xsltIsBlank			(xmlChar * str)

Check if a string is ignorable

str:a string
Returns:1 if the string is NULL or made of blanks chars, 0 otherwise

Function: xsltLoadStylesheetPI

xsltStylesheetPtr	xsltLoadStylesheetPI	(xmlDocPtr doc)

This function tries to locate the stylesheet PI in the given document If found, and if contained within the document, it will extract that subtree to build the stylesheet to process @doc (doc itself will be modified). If found but referencing an external document it will attempt to load it and generate a stylesheet from it. In both cases, the resulting stylesheet and the document need to be freed once the transformation is done.

doc:a document to process
Returns:a new XSLT stylesheet structure or NULL if not found.

Function: xsltNewStylesheet

xsltStylesheetPtr	xsltNewStylesheet	(void)

Create a new XSLT Stylesheet

Returns:the newly allocated xsltStylesheetPtr or NULL in case of error

Function: xsltNumberFormat

void	xsltNumberFormat		(xsltTransformContextPtr ctxt, 
xsltNumberDataPtr data,
xmlNodePtr node)

Convert one number.

ctxt:the XSLT transformation context
data:the formatting informations
node:the data to format

Function: xsltParseAnyXSLTElem

int	xsltParseAnyXSLTElem		(xsltCompilerCtxtPtr cctxt, 
xmlNodePtr elem)

Parses, validates the content models and compiles XSLT instructions.

cctxt:the compilation context
elem:the element node of the XSLT instruction
Returns:0 if everything's fine; -1 on API or internal errors.

Function: xsltParseSequenceConstructor

void	xsltParseSequenceConstructor	(xsltCompilerCtxtPtr cctxt, 
xmlNodePtr cur)

Parses a "template" content (or "sequence constructor" in XSLT 2.0 terms). This will additionally remove xsl:text elements from the tree.

cctxt:the compilation context
cur:the start-node of the content to be parsed

Function: xsltParseStylesheetDoc

xsltStylesheetPtr	xsltParseStylesheetDoc	(xmlDocPtr doc)

parse an XSLT stylesheet, building the associated structures. doc is kept as a reference within the returned stylesheet, so changes to doc after the parsing will be reflected when the stylesheet is applied, and the doc is automatically freed when the stylesheet is closed.

doc:and xmlDoc parsed XML
Returns:a new XSLT stylesheet structure.

Function: xsltParseStylesheetFile

xsltStylesheetPtr	xsltParseStylesheetFile	(const xmlChar * filename)

Load and parse an XSLT stylesheet

filename:the filename/URL to the stylesheet
Returns:a new XSLT stylesheet structure.

Function: xsltParseStylesheetImportedDoc

xsltStylesheetPtr	xsltParseStylesheetImportedDoc	(xmlDocPtr doc, 
xsltStylesheetPtr parentStyle)

parse an XSLT stylesheet building the associated structures except the processing not needed for imported documents.

doc:an xmlDoc parsed XML
parentStyle:pointer to the parent stylesheet (if it exists)
Returns:a new XSLT stylesheet structure.

Function: xsltParseStylesheetOutput

void	xsltParseStylesheetOutput	(xsltStylesheetPtr style, 
xmlNodePtr cur)

parse an XSLT stylesheet output element and record information related to the stylesheet output

style:the XSLT stylesheet
cur:the "output" element

Function: xsltParseStylesheetProcess

xsltStylesheetPtr	xsltParseStylesheetProcess	(xsltStylesheetPtr ret, 
xmlDocPtr doc)

Parses an XSLT stylesheet, adding the associated structures. Called by: xsltParseStylesheetImportedDoc() (xslt.c) xsltParseStylesheetInclude() (imports.c)

ret:the XSLT stylesheet (the current stylesheet-level)
doc:and xmlDoc parsed XML
Returns:the value of the @style parameter if everything went right, NULL if something went amiss.

Function: xsltParseTemplateContent

void	xsltParseTemplateContent	(xsltStylesheetPtr style, 
xmlNodePtr templ)

parse a template content-model Clean-up the template content from unwanted ignorable blank nodes and process xslt:text

style:the XSLT stylesheet
templ:the container node (can be a document for literal results)

Function: xsltPointerListAddSize

int	xsltPointerListAddSize		(xsltPointerListPtr list, 
void * item,
int initialSize)

Adds an item to the list.

list:the pointer list structure
item:the item to be stored
initialSize:the initial size of the list
Returns:the position of the added item in the list or -1 in case of an error.

Function: xsltPointerListClear

void	xsltPointerListClear		(xsltPointerListPtr list)

Resets the list, but does not free the allocated array and does not free the content of the list.

list:pointer to the list to be cleared

Function: xsltPointerListCreate

xsltPointerListPtr	xsltPointerListCreate	(int initialSize)

Creates an xsltPointerList structure.

initialSize:the initial size for the list
Returns:a xsltPointerList structure or NULL in case of an error.

Function: xsltPointerListFree

void	xsltPointerListFree		(xsltPointerListPtr list)

Frees the xsltPointerList structure. This does not free the content of the list.

list:pointer to the list to be freed

Function: xsltRegisterLocalRVT

int	xsltRegisterLocalRVT		(xsltTransformContextPtr ctxt, 
xmlDocPtr RVT)

Registers a result value tree (XSLT 1.0 term: Result Tree Fragment) in the RVT garbage collector. The fragment will be freed when the instruction which created the fragment exits.

ctxt:an XSLT transformation context
RVT:a result value tree (Result Tree Fragment; xmlDocPtr)
Returns:0 in case of success and -1 in case of API or internal errors.

Function: xsltRegisterPersistRVT

int	xsltRegisterPersistRVT		(xsltTransformContextPtr ctxt, 
xmlDocPtr RVT)

Register the result value tree (XSLT 1.0 term: Result Tree Fragment) in the fragment garbage collector. The fragment will be freed when the transformation context is freed.

ctxt:an XSLT transformation context
RVT:a result value tree (Result Tree Fragment)
Returns:0 in case of success and -1 in case of error.

Function: xsltRegisterTmpRVT

int	xsltRegisterTmpRVT		(xsltTransformContextPtr ctxt, 
xmlDocPtr RVT)

Registers the result value tree (XSLT 1.0 term: Result Tree Fragment) in the garbage collector. The fragment will be freed at the exit of the currently instantiated xsl:template. Obsolete; this function might produce massive memory overhead, since the fragment is only freed when the current xsl:template exits. Use xsltRegisterLocalRVT() instead.

ctxt:an XSLT transformation context
RVT:a result value tree (Result Tree Fragment)
Returns:0 in case of success and -1 in case of API or internal errors.

Function: xsltReleaseRVT

void	xsltReleaseRVT			(xsltTransformContextPtr ctxt, 
xmlDocPtr RVT)

Either frees the RVT (which is an xmlDoc) or stores it in the context's cache for later reuse.

ctxt:an XSLT transformation context
RVT:a result value tree (Result Tree Fragment)

Function: xsltRestoreDocumentNamespaces

int	xsltRestoreDocumentNamespaces	(xsltNsMapPtr ns, 
xmlDocPtr doc)

Restore the namespaces for the document

ns:map of namespaces
doc:the document
Returns:0 in case of success, -1 in case of failure

Function type: xsltSortFunc

Function type: xsltSortFunc
void	xsltSortFunc			(xsltTransformContextPtr ctxt, 
xmlNodePtr * sorts,
int nbsorts)

Signature of the function to use during sorting

ctxt:a transformation context
sorts:the node-set to sort
nbsorts:the number of sorts

Function type: xsltTransformFunction

Function type: xsltTransformFunction
void	xsltTransformFunction		(xsltTransformContextPtr ctxt, 
xmlNodePtr node,
xmlNodePtr inst,
xsltElemPreCompPtr comp)

Signature of the function associated to elements part of the stylesheet language like xsl:if or xsl:apply-templates.

ctxt:the XSLT transformation context
node:the input node
inst:the stylesheet node
comp:the compiled information from the stylesheet

Function: xsltUninit

void	xsltUninit			(void)

Uninitializes the processor.

Daniel Veillard

PK|0]1+vZvZhtml/libxslt-variables.htmlnu[ Module variables from libxslt
Action against software patentsGNOME2 LogoW3C logoRed Hat Logo
Made with Libxslt Logo

The XSLT C library for GNOME

Module variables from libxslt

API Menu
Related links
API Indexes

interface for the variable matching and lookup.

Table of Contents

#define XSLT_REGISTER_VARIABLE_LOOKUP
#define XSLT_RVT_FUNC_RESULT
#define XSLT_RVT_GLOBAL
#define XSLT_RVT_LOCAL
#define XSLT_RVT_VARIABLE
int	xsltAddStackElemList		(xsltTransformContextPtr ctxt, 
xsltStackElemPtr elems)
int	xsltEvalGlobalVariables		(xsltTransformContextPtr ctxt)
int	xsltEvalOneUserParam		(xsltTransformContextPtr ctxt, 
const xmlChar * name,
const xmlChar * value)
int	xsltEvalUserParams		(xsltTransformContextPtr ctxt, 
const char ** params)
void	xsltFreeGlobalVariables		(xsltTransformContextPtr ctxt)
void	xsltParseGlobalParam		(xsltStylesheetPtr style, 
xmlNodePtr cur)
void	xsltParseGlobalVariable		(xsltStylesheetPtr style, 
xmlNodePtr cur)
xsltStackElemPtr	xsltParseStylesheetCallerParam	(xsltTransformContextPtr ctxt, 
xmlNodePtr inst)
void	xsltParseStylesheetParam	(xsltTransformContextPtr ctxt, 
xmlNodePtr cur)
void	xsltParseStylesheetVariable	(xsltTransformContextPtr ctxt, 
xmlNodePtr inst)
int	xsltQuoteOneUserParam		(xsltTransformContextPtr ctxt, 
const xmlChar * name,
const xmlChar * value)
int	xsltQuoteUserParams		(xsltTransformContextPtr ctxt, 
const char ** params)
xmlXPathObjectPtr	xsltVariableLookup	(xsltTransformContextPtr ctxt, 
const xmlChar * name,
const xmlChar * ns_uri)
xmlXPathObjectPtr	xsltXPathVariableLookup	(void * ctxt, 
const xmlChar * name,
const xmlChar * ns_uri)

Description

Macro: XSLT_REGISTER_VARIABLE_LOOKUP

#define XSLT_REGISTER_VARIABLE_LOOKUP

Registering macro, not general purpose at all but used in different modules.

Macro: XSLT_RVT_FUNC_RESULT

#define XSLT_RVT_FUNC_RESULT

RVT is part of results returned with func:result. The RVT won't be destroyed after exiting a template and will be reset to XSLT_RVT_LOCAL or XSLT_RVT_VARIABLE in the template that receives the return value.

Macro: XSLT_RVT_GLOBAL

#define XSLT_RVT_GLOBAL

RVT is part of a global variable.

Macro: XSLT_RVT_LOCAL

#define XSLT_RVT_LOCAL

RVT is destroyed after the current instructions ends.

Macro: XSLT_RVT_VARIABLE

#define XSLT_RVT_VARIABLE

RVT is part of a local variable and destroyed after the variable goes out of scope.

Function: xsltAddStackElemList

int	xsltAddStackElemList		(xsltTransformContextPtr ctxt, 
xsltStackElemPtr elems)

Push an element list onto the stack.

ctxt:xn XSLT transformation context
elems:a stack element list
Returns:0 in case of success, -1 in case of failure.

Function: xsltEvalGlobalVariables

int	xsltEvalGlobalVariables		(xsltTransformContextPtr ctxt)

Evaluates all global variables and parameters of a stylesheet. For internal use only. This is called at start of a transformation.

ctxt:the XSLT transformation context
Returns:0 in case of success, -1 in case of error

Function: xsltEvalOneUserParam

int	xsltEvalOneUserParam		(xsltTransformContextPtr ctxt, 
const xmlChar * name,
const xmlChar * value)

This is normally called from xsltEvalUserParams to process a single parameter from a list of parameters. The @value is evaluated as an XPath expression and the result is stored in the context's global variable/parameter hash table. To have a parameter treated literally (not as an XPath expression) use xsltQuoteUserParams (or xsltQuoteOneUserParam). For more details see description of xsltProcessOneUserParamInternal.

ctxt:the XSLT transformation context
name:a null terminated string giving the name of the parameter
value:a null terminated string giving the XPath expression to be evaluated
Returns:0 in case of success, -1 in case of error.

Function: xsltEvalUserParams

int	xsltEvalUserParams		(xsltTransformContextPtr ctxt, 
const char ** params)

Evaluate the global variables of a stylesheet. This needs to be done on parsed stylesheets before starting to apply transformations. Each of the parameters is evaluated as an XPath expression and stored in the global variables/parameter hash table. If you want your parameter used literally, use xsltQuoteUserParams.

ctxt:the XSLT transformation context
params:a NULL terminated array of parameters name/value tuples
Returns:0 in case of success, -1 in case of error

Function: xsltFreeGlobalVariables

void	xsltFreeGlobalVariables		(xsltTransformContextPtr ctxt)

Free up the data associated to the global variables its value.

ctxt:the XSLT transformation context

Function: xsltParseGlobalParam

void	xsltParseGlobalParam		(xsltStylesheetPtr style, 
xmlNodePtr cur)

parse an XSLT transformation param declaration and record its value.

style:the XSLT stylesheet
cur:the "param" element

Function: xsltParseGlobalVariable

void	xsltParseGlobalVariable		(xsltStylesheetPtr style, 
xmlNodePtr cur)

Parses a global XSLT 'variable' declaration at compilation time and registers it

style:the XSLT stylesheet
cur:the "variable" element

Function: xsltParseStylesheetCallerParam

xsltStackElemPtr	xsltParseStylesheetCallerParam	(xsltTransformContextPtr ctxt, 
xmlNodePtr inst)

Processes an xsl:with-param instruction at transformation time. The value is compute, but not recorded. NOTE that this is also called with an *xsl:param* element from exsltFuncFunctionFunction().

ctxt:the XSLT transformation context
inst:the xsl:with-param instruction element
Returns:the new xsltStackElemPtr or NULL

Function: xsltParseStylesheetParam

void	xsltParseStylesheetParam	(xsltTransformContextPtr ctxt, 
xmlNodePtr cur)

Registers a local XSLT 'param' declaration at transformation time and evaluates its value.

ctxt:the XSLT transformation context
cur:the XSLT 'param' element

Function: xsltParseStylesheetVariable

void	xsltParseStylesheetVariable	(xsltTransformContextPtr ctxt, 
xmlNodePtr inst)

Registers a local XSLT 'variable' instruction at transformation time and evaluates its value.

ctxt:the XSLT transformation context
inst:the xsl:variable instruction element

Function: xsltQuoteOneUserParam

int	xsltQuoteOneUserParam		(xsltTransformContextPtr ctxt, 
const xmlChar * name,
const xmlChar * value)

This is normally called from xsltQuoteUserParams to process a single parameter from a list of parameters. The @value is stored in the context's global variable/parameter hash table.

ctxt:the XSLT transformation context
name:a null terminated string giving the name of the parameter
value:a null terminated string giving the parameter value
Returns:0 in case of success, -1 in case of error.

Function: xsltQuoteUserParams

int	xsltQuoteUserParams		(xsltTransformContextPtr ctxt, 
const char ** params)

Similar to xsltEvalUserParams, but the values are treated literally and are * *not* evaluated as XPath expressions. This should be done on parsed stylesheets before starting to apply transformations.

ctxt:the XSLT transformation context
params:a NULL terminated arry of parameters names/values tuples
Returns:0 in case of success, -1 in case of error.

Function: xsltVariableLookup

xmlXPathObjectPtr	xsltVariableLookup	(xsltTransformContextPtr ctxt, 
const xmlChar * name,
const xmlChar * ns_uri)

Search in the Variable array of the context for the given variable value.

ctxt:the XSLT transformation context
name:the variable name
ns_uri:the variable namespace URI
Returns:the value or NULL if not found

Function: xsltXPathVariableLookup

xmlXPathObjectPtr	xsltXPathVariableLookup	(void * ctxt, 
const xmlChar * name,
const xmlChar * ns_uri)

This is the entry point when a varibale is needed by the XPath interpretor.

ctxt:a void * but the the XSLT transformation context actually
name:the variable name
ns_uri:the variable namespace URI
Returns:the value or NULL if not found

Daniel Veillard

PK|0]:NNhtml/libxslt-security.htmlnu[ Module security from libxslt
Action against software patentsGNOME2 LogoW3C logoRed Hat Logo
Made with Libxslt Logo

The XSLT C library for GNOME

Module security from libxslt

API Menu
Related links
API Indexes

the libxslt security framework allow to restrict the access to new resources (file or URL) from the stylesheet at runtime.

Table of Contents

Enum xsltSecurityOption
Structure xsltSecurityPrefs
struct _xsltSecurityPrefs The content of this structure is not made public by the API.
Typedef xsltSecurityPrefs * xsltSecurityPrefsPtr
int	xsltCheckRead			(xsltSecurityPrefsPtr sec, 
xsltTransformContextPtr ctxt,
const xmlChar * URL)
int	xsltCheckWrite			(xsltSecurityPrefsPtr sec, 
xsltTransformContextPtr ctxt,
const xmlChar * URL)
void	xsltFreeSecurityPrefs		(xsltSecurityPrefsPtr sec)
xsltSecurityPrefsPtr	xsltGetDefaultSecurityPrefs	(void)
xsltSecurityCheck	xsltGetSecurityPrefs	(xsltSecurityPrefsPtr sec, 
xsltSecurityOption option)
xsltSecurityPrefsPtr	xsltNewSecurityPrefs	(void)
int	xsltSecurityAllow		(xsltSecurityPrefsPtr sec, 
xsltTransformContextPtr ctxt,
const char * value)
Function type: xsltSecurityCheck
int	xsltSecurityCheck		(xsltSecurityPrefsPtr sec, 
xsltTransformContextPtr ctxt,
const char * value)
int	xsltSecurityForbid		(xsltSecurityPrefsPtr sec, 
xsltTransformContextPtr ctxt,
const char * value)
int	xsltSetCtxtSecurityPrefs	(xsltSecurityPrefsPtr sec, 
xsltTransformContextPtr ctxt)
void	xsltSetDefaultSecurityPrefs	(xsltSecurityPrefsPtr sec)
int	xsltSetSecurityPrefs		(xsltSecurityPrefsPtr sec, 
xsltSecurityOption option,
xsltSecurityCheck func)

Description

Enum xsltSecurityOption

Enum xsltSecurityOption {
    XSLT_SECPREF_READ_FILE = 1
    XSLT_SECPREF_WRITE_FILE = 2
    XSLT_SECPREF_CREATE_DIRECTORY = 3
    XSLT_SECPREF_READ_NETWORK = 4
    XSLT_SECPREF_WRITE_NETWORK = 5
}

Structure xsltSecurityPrefs

Structure xsltSecurityPrefs
struct _xsltSecurityPrefs { The content of this structure is not made public by the API. }

Function: xsltCheckRead

int	xsltCheckRead			(xsltSecurityPrefsPtr sec, 
xsltTransformContextPtr ctxt,
const xmlChar * URL)

Check if the resource is allowed to be read

sec:the security options
ctxt:an XSLT transformation context
URL:the resource to be read
Returns:1 if read is allowed, 0 if not and -1 in case or error.

Function: xsltCheckWrite

int	xsltCheckWrite			(xsltSecurityPrefsPtr sec, 
xsltTransformContextPtr ctxt,
const xmlChar * URL)

Check if the resource is allowed to be written, if necessary makes some preliminary work like creating directories

sec:the security options
ctxt:an XSLT transformation context
URL:the resource to be written
Returns:1 if write is allowed, 0 if not and -1 in case or error.

Function: xsltFreeSecurityPrefs

void	xsltFreeSecurityPrefs		(xsltSecurityPrefsPtr sec)

Free up a security preference block

sec:the security block to free

Function: xsltGetDefaultSecurityPrefs

xsltSecurityPrefsPtr	xsltGetDefaultSecurityPrefs	(void)

Get the default security preference application-wide

Returns:the current xsltSecurityPrefsPtr in use or NULL if none

Function: xsltGetSecurityPrefs

xsltSecurityCheck	xsltGetSecurityPrefs	(xsltSecurityPrefsPtr sec, 
xsltSecurityOption option)

Lookup the security option to get the callback checking function

sec:the security block to update
option:the option to lookup
Returns:NULL if not found, the function otherwise

Function: xsltNewSecurityPrefs

xsltSecurityPrefsPtr	xsltNewSecurityPrefs	(void)

Create a new security preference block

Returns:a pointer to the new block or NULL in case of error

Function: xsltSecurityAllow

int	xsltSecurityAllow		(xsltSecurityPrefsPtr sec, 
xsltTransformContextPtr ctxt,
const char * value)

Function used to always allow an operation

sec:the security block to use
ctxt:an XSLT transformation context
value:unused
Returns:1 always

Function type: xsltSecurityCheck

Function type: xsltSecurityCheck
int	xsltSecurityCheck		(xsltSecurityPrefsPtr sec, 
xsltTransformContextPtr ctxt,
const char * value)

User provided function to check the value of a string like a file path or an URL ...

sec:
ctxt:
value:
Returns:

Function: xsltSecurityForbid

int	xsltSecurityForbid		(xsltSecurityPrefsPtr sec, 
xsltTransformContextPtr ctxt,
const char * value)

Function used to always forbid an operation

sec:the security block to use
ctxt:an XSLT transformation context
value:unused
Returns:0 always

Function: xsltSetCtxtSecurityPrefs

int	xsltSetCtxtSecurityPrefs	(xsltSecurityPrefsPtr sec, 
xsltTransformContextPtr ctxt)

Set the security preference for a specific transformation

sec:the security block to use
ctxt:an XSLT transformation context
Returns:-1 in case of error, 0 otherwise

Function: xsltSetDefaultSecurityPrefs

void	xsltSetDefaultSecurityPrefs	(xsltSecurityPrefsPtr sec)

Set the default security preference application-wide

sec:the security block to use

Function: xsltSetSecurityPrefs

int	xsltSetSecurityPrefs		(xsltSecurityPrefsPtr sec, 
xsltSecurityOption option,
xsltSecurityCheck func)

Update the security option to use the new callback checking function

sec:the security block to update
option:the option to update
func:the user callback to use for this option
Returns:-1 in case of error, 0 otherwise

Daniel Veillard

PK|0]CZ  html/up.pngnu[PNG  IHDRw=bKGD pHYs  ~tIME2.E#IDATx=J@Fo] !+2[Z<@/9|t$D9nnBjBRIsI:H8UPN1fcsN95M㧖ɵ 束1~pEe$I 7nrDf!;`'ykI䲤sI_]y^^I>O>?YBIENDB`PK|0]eRhtml/book1.htmlnu[ Reference Manual for libxslt
Action against software patentsGNOME2 LogoW3C logoRed Hat Logo
Made with Libxslt Logo

The XSLT C library for GNOME

Reference Manual for libxslt

API Menu
Related links
API Indexes

Table of Contents

  • attributes: interface for the XSLT attribute handling
  • documents: interface for the document handling
  • extensions: interface for the extension support
  • extra: interface for the non-standard features
  • functions: interface for the XSLT functions not from XPath
  • imports: interface for the XSLT import support
  • keys: interface for the key matching used in key() and template matches.
  • namespaces: interface for the XSLT namespace handling
  • numbersInternals: Implementation of the XSLT number functions
  • pattern: interface for the pattern matching used in template matches.
  • preproc: precomputing stylesheets
  • security: interface for the libxslt security framework
  • templates: interface for the template processing
  • transform: the XSLT engine transformation part.
  • variables: interface for the variable matching and lookup.
  • xslt: Interfaces, constants and types related to the XSLT engine
  • xsltInternals: internal data structures, constants and functions
  • xsltexports: macros for marking symbols as exportable/importable.
  • xsltlocale: Locale handling
  • xsltutils: set of utilities for the XSLT engine

Daniel Veillard

PK|0]D html/left.pngnu[PNG  IHDRw=bKGD pHYs  ~tIME1&[(XIDATx!OPE*ID%~ꊯ"p'ŏ`sܖrKf hmiIz}ܯI.p\`x l?l[,Hk<#c%\AUx[S7n6rzEs1j@NL$ݤi0 5/}\EKIo͓$a0jdFbkIAh>WlC'?tk;|/t*INZ^`y4Nr]׮ J<ڐt`X1@p䀸dZ')hK $V?%]+LsgUK"w53OIENDB`PK|0]һyH\\html/libxslt-xsltutils.htmlnu[ Module xsltutils from libxslt
Action against software patentsGNOME2 LogoW3C logoRed Hat Logo
Made with Libxslt Logo

The XSLT C library for GNOME

Module xsltutils from libxslt

API Menu
Related links
API Indexes

interfaces for the utilities module of the XSLT engine. things like message handling, profiling, and other generally useful routines.

Table of Contents

#define IS_XSLT_ELEM
#define IS_XSLT_NAME
#define IS_XSLT_REAL_NODE
#define XSLT_STRANGE
#define XSLT_TIMESTAMP_TICS_PER_SEC
#define XSLT_TODO
#define XSLT_TRACE
Enum xsltDebugStatusCodes
Enum xsltDebugTraceCodes
int	xslAddCall			(xsltTemplatePtr templ, 
xmlNodePtr source)
void	xslDropCall			(void)
Function type: xsltAddCallCallback
int	xsltAddCallCallback		(xsltTemplatePtr templ, 
xmlNodePtr source)
void	xsltCalibrateAdjust		(long delta)
xmlXPathObjectPtr *	xsltComputeSortResult	(xsltTransformContextPtr ctxt, 
xmlNodePtr sort)
xsltDebugTraceCodes	xsltDebugGetDefaultTrace	(void)
void	xsltDebugSetDefaultTrace	(xsltDebugTraceCodes val)
void	xsltDefaultSortFunction		(xsltTransformContextPtr ctxt, 
xmlNodePtr * sorts,
int nbsorts)
void	xsltDoSortFunction		(xsltTransformContextPtr ctxt, 
xmlNodePtr * sorts,
int nbsorts)
void	xsltDocumentSortFunction	(xmlNodeSetPtr list)
Function type: xsltDropCallCallback
void	xsltDropCallCallback		(void)
const xmlChar *	xsltGetCNsProp		(xsltStylesheetPtr style, 
xmlNodePtr node,
const xmlChar * name,
const xmlChar * nameSpace)
int	xsltGetDebuggerStatus		(void)
xmlChar *	xsltGetNsProp		(xmlNodePtr node, 
const xmlChar * name,
const xmlChar * nameSpace)
xmlDocPtr	xsltGetProfileInformation	(xsltTransformContextPtr ctxt)
const xmlChar *	xsltGetQNameURI		(xmlNodePtr node, 
xmlChar ** name)
const xmlChar *	xsltGetQNameURI2	(xsltStylesheetPtr style, 
xmlNodePtr node,
const xmlChar ** name)
int	xsltGetUTF8Char			(const unsigned char * utf, 
int * len)
Function type: xsltHandleDebuggerCallback
void	xsltHandleDebuggerCallback	(xmlNodePtr cur, 
xmlNodePtr node,
xsltTemplatePtr templ,
xsltTransformContextPtr ctxt)
void	xsltMessage			(xsltTransformContextPtr ctxt, 
xmlNodePtr node,
xmlNodePtr inst)
void	xsltPrintErrorContext		(xsltTransformContextPtr ctxt, 
xsltStylesheetPtr style,
xmlNodePtr node)
void	xsltSaveProfiling		(xsltTransformContextPtr ctxt, 
FILE * output)
int	xsltSaveResultTo		(xmlOutputBufferPtr buf, 
xmlDocPtr result,
xsltStylesheetPtr style)
int	xsltSaveResultToFd		(int fd, 
xmlDocPtr result,
xsltStylesheetPtr style)
int	xsltSaveResultToFile		(FILE * file, 
xmlDocPtr result,
xsltStylesheetPtr style)
int	xsltSaveResultToFilename	(const char * URL, 
xmlDocPtr result,
xsltStylesheetPtr style,
int compression)
int	xsltSaveResultToString		(xmlChar ** doc_txt_ptr, 
int * doc_txt_len,
xmlDocPtr result,
xsltStylesheetPtr style)
int	xsltSetCtxtParseOptions		(xsltTransformContextPtr ctxt, 
int options)
void	xsltSetCtxtSortFunc		(xsltTransformContextPtr ctxt, 
xsltSortFunc handler)
int	xsltSetDebuggerCallbacks	(int no, 
void * block)
void	xsltSetDebuggerStatus		(int value)
void	xsltSetGenericDebugFunc		(void * ctx, 
xmlGenericErrorFunc handler)
void	xsltSetGenericErrorFunc		(void * ctx, 
xmlGenericErrorFunc handler)
void	xsltSetSortFunc			(xsltSortFunc handler)
void	xsltSetTransformErrorFunc	(xsltTransformContextPtr ctxt, 
void * ctx,
xmlGenericErrorFunc handler)
const xmlChar *	xsltSplitQName		(xmlDictPtr dict, 
const xmlChar * name,
const xmlChar ** prefix)
long	xsltTimestamp			(void)
void	xsltTransformError		(xsltTransformContextPtr ctxt, 
xsltStylesheetPtr style,
xmlNodePtr node,
const char * msg,
... ...)
xmlXPathCompExprPtr	xsltXPathCompile	(xsltStylesheetPtr style, 
const xmlChar * str)
xmlXPathCompExprPtr	xsltXPathCompileFlags	(xsltStylesheetPtr style, 
const xmlChar * str,
int flags)

Description

Macro: IS_XSLT_ELEM

#define IS_XSLT_ELEM

Checks that the element pertains to XSLT namespace.

Macro: IS_XSLT_NAME

#define IS_XSLT_NAME

Checks the value of an element in XSLT namespace.

Macro: IS_XSLT_REAL_NODE

#define IS_XSLT_REAL_NODE

Check that a node is a 'real' one: document, element, text or attribute.

Macro: XSLT_STRANGE

#define XSLT_STRANGE

Macro to flag that a problem was detected internally.

Macro: XSLT_TIMESTAMP_TICS_PER_SEC

#define XSLT_TIMESTAMP_TICS_PER_SEC

Sampling precision for profiling

Macro: XSLT_TODO

#define XSLT_TODO

Macro to flag unimplemented blocks.

Macro: XSLT_TRACE

#define XSLT_TRACE

Control the type of xsl debugtrace messages emitted.

Enum xsltDebugStatusCodes

Enum xsltDebugStatusCodes {
    XSLT_DEBUG_NONE = 0 : no debugging allowed
    XSLT_DEBUG_INIT = 1
    XSLT_DEBUG_STEP = 2
    XSLT_DEBUG_STEPOUT = 3
    XSLT_DEBUG_NEXT = 4
    XSLT_DEBUG_STOP = 5
    XSLT_DEBUG_CONT = 6
    XSLT_DEBUG_RUN = 7
    XSLT_DEBUG_RUN_RESTART = 8
    XSLT_DEBUG_QUIT = 9
}

Enum xsltDebugTraceCodes

Enum xsltDebugTraceCodes {
    XSLT_TRACE_ALL = -1
    XSLT_TRACE_NONE = 0
    XSLT_TRACE_COPY_TEXT = 1
    XSLT_TRACE_PROCESS_NODE = 2
    XSLT_TRACE_APPLY_TEMPLATE = 4
    XSLT_TRACE_COPY = 8
    XSLT_TRACE_COMMENT = 16
    XSLT_TRACE_PI = 32
    XSLT_TRACE_COPY_OF = 64
    XSLT_TRACE_VALUE_OF = 128
    XSLT_TRACE_CALL_TEMPLATE = 256
    XSLT_TRACE_APPLY_TEMPLATES = 512
    XSLT_TRACE_CHOOSE = 1024
    XSLT_TRACE_IF = 2048
    XSLT_TRACE_FOR_EACH = 4096
    XSLT_TRACE_STRIP_SPACES = 8192
    XSLT_TRACE_TEMPLATES = 16384
    XSLT_TRACE_KEYS = 32768
    XSLT_TRACE_VARIABLES = 65536
}

Function: xslAddCall

int	xslAddCall			(xsltTemplatePtr templ, 
xmlNodePtr source)

Add template "call" to call stack

templ:current template being applied
source:the source node being processed
Returns:: 1 on sucess 0 otherwise an error may be printed if WITH_XSLT_DEBUG_BREAKPOINTS is defined

Function: xslDropCall

void	xslDropCall			(void)

Drop the topmost item off the call stack

Function type: xsltAddCallCallback

Function type: xsltAddCallCallback
int	xsltAddCallCallback		(xsltTemplatePtr templ, 
xmlNodePtr source)

templ:
source:
Returns:

Function: xsltCalibrateAdjust

void	xsltCalibrateAdjust		(long delta)

Used for to correct the calibration for xsltTimestamp()

delta:a negative dealy value found

Function: xsltComputeSortResult

xmlXPathObjectPtr *	xsltComputeSortResult	(xsltTransformContextPtr ctxt, 
xmlNodePtr sort)

reorder the current node list accordingly to the set of sorting requirement provided by the array of nodes.

ctxt:a XSLT process context
sort:node list
Returns:a ordered XPath nodeset or NULL in case of error.

Function: xsltDebugGetDefaultTrace

xsltDebugTraceCodes	xsltDebugGetDefaultTrace	(void)

Get the current default debug tracing level mask

Returns:the current default debug tracing level mask

Function: xsltDebugSetDefaultTrace

void	xsltDebugSetDefaultTrace	(xsltDebugTraceCodes val)

Set the default debug tracing level mask

val:tracing level mask

Function: xsltDefaultSortFunction

void	xsltDefaultSortFunction		(xsltTransformContextPtr ctxt, 
xmlNodePtr * sorts,
int nbsorts)

reorder the current node list accordingly to the set of sorting requirement provided by the arry of nodes.

ctxt:a XSLT process context
sorts:array of sort nodes
nbsorts:the number of sorts in the array

Function: xsltDoSortFunction

void	xsltDoSortFunction		(xsltTransformContextPtr ctxt, 
xmlNodePtr * sorts,
int nbsorts)

reorder the current node list accordingly to the set of sorting requirement provided by the arry of nodes. This is a wrapper function, the actual function used is specified using xsltSetCtxtSortFunc() to set the context specific sort function, or xsltSetSortFunc() to set the global sort function. If a sort function is set on the context, this will get called. Otherwise the global sort function is called.

ctxt:a XSLT process context
sorts:array of sort nodes
nbsorts:the number of sorts in the array

Function: xsltDocumentSortFunction

void	xsltDocumentSortFunction	(xmlNodeSetPtr list)

reorder the current node list @list accordingly to the document order This function is slow, obsolete and should not be used anymore.

list:the node set

Function type: xsltDropCallCallback

Function type: xsltDropCallCallback
void	xsltDropCallCallback		(void)


Function: xsltGetCNsProp

const xmlChar *	xsltGetCNsProp		(xsltStylesheetPtr style, 
xmlNodePtr node,
const xmlChar * name,
const xmlChar * nameSpace)

Similar to xmlGetNsProp() but with a slightly different semantic Search and get the value of an attribute associated to a node This attribute has to be anchored in the namespace specified, or has no namespace and the element is in that namespace. This does the entity substitution. This function looks in DTD attribute declaration for #FIXED or default declaration values unless DTD use has been turned off.

style:the stylesheet
node:the node
name:the attribute name
nameSpace:the URI of the namespace
Returns:the attribute value or NULL if not found. The string is allocated in the stylesheet dictionary.

Function: xsltGetDebuggerStatus

int	xsltGetDebuggerStatus		(void)

Get xslDebugStatus.

Returns:the value of xslDebugStatus.

Function: xsltGetNsProp

xmlChar *	xsltGetNsProp		(xmlNodePtr node, 
const xmlChar * name,
const xmlChar * nameSpace)

Similar to xmlGetNsProp() but with a slightly different semantic Search and get the value of an attribute associated to a node This attribute has to be anchored in the namespace specified, or has no namespace and the element is in that namespace. This does the entity substitution. This function looks in DTD attribute declaration for #FIXED or default declaration values unless DTD use has been turned off.

node:the node
name:the attribute name
nameSpace:the URI of the namespace
Returns:the attribute value or NULL if not found. It's up to the caller to free the memory.

Function: xsltGetProfileInformation

xmlDocPtr	xsltGetProfileInformation	(xsltTransformContextPtr ctxt)

This function should be called after the transformation completed to extract template processing profiling informations if availble. The informations are returned as an XML document tree like <?xml version="1.0"?> <profile> <template rank="1" match="*" name="" mode="" calls="6" time="48" average="8"/> <template rank="2" match="item2|item3" name="" mode="" calls="10" time="30" average="3"/> <template rank="3" match="item1" name="" mode="" calls="5" time="17" average="3"/> </profile> The caller will need to free up the returned tree with xmlFreeDoc()

ctxt:a transformation context
Returns:the xmlDocPtr corresponding to the result or NULL if not available.

Function: xsltGetQNameURI

const xmlChar *	xsltGetQNameURI		(xmlNodePtr node, 
xmlChar ** name)

This function analyzes @name, if the name contains a prefix, the function seaches the associated namespace in scope for it. It will also replace @name value with the NCName, the old value being freed. Errors in the prefix lookup are signalled by setting @name to NULL. NOTE: the namespace returned is a pointer to the place where it is defined and hence has the same lifespan as the document holding it.

node:the node holding the QName
name:pointer to the initial QName value
Returns:the namespace URI if there is a prefix, or NULL if @name is not prefixed.

Function: xsltGetQNameURI2

const xmlChar *	xsltGetQNameURI2	(xsltStylesheetPtr style, 
xmlNodePtr node,
const xmlChar ** name)

This function is similar to xsltGetQNameURI, but is used when @name is a dictionary entry.

style:stylesheet pointer
node:the node holding the QName
name:pointer to the initial QName value
Returns:the namespace URI if there is a prefix, or NULL if @name is not prefixed.

Function: xsltGetUTF8Char

int	xsltGetUTF8Char			(const unsigned char * utf, 
int * len)

Read one UTF8 Char from @utf Function copied from libxml2 xmlGetUTF8Char() ... to discard ultimately and use the original API

utf:a sequence of UTF-8 encoded bytes
len:a pointer to @bytes len
Returns:the char value or -1 in case of error and update @len with the number of bytes used

Function type: xsltHandleDebuggerCallback

Function type: xsltHandleDebuggerCallback
void	xsltHandleDebuggerCallback	(xmlNodePtr cur, 
xmlNodePtr node,
xsltTemplatePtr templ,
xsltTransformContextPtr ctxt)

cur:
node:
templ:
ctxt:

Function: xsltMessage

void	xsltMessage			(xsltTransformContextPtr ctxt, 
xmlNodePtr node,
xmlNodePtr inst)

Process and xsl:message construct

ctxt:an XSLT processing context
node:The current node
inst:The node containing the message instruction

Function: xsltPrintErrorContext

void	xsltPrintErrorContext		(xsltTransformContextPtr ctxt, 
xsltStylesheetPtr style,
xmlNodePtr node)

Display the context of an error.

ctxt:the transformation context
style:the stylesheet
node:the current node being processed

Function: xsltSaveProfiling

void	xsltSaveProfiling		(xsltTransformContextPtr ctxt, 
FILE * output)

Save the profiling informations on @output

ctxt:an XSLT context
output:a FILE * for saving the informations

Function: xsltSaveResultTo

int	xsltSaveResultTo		(xmlOutputBufferPtr buf, 
xmlDocPtr result,
xsltStylesheetPtr style)

Save the result @result obtained by applying the @style stylesheet to an I/O output channel @buf

buf:an output buffer
result:the result xmlDocPtr
style:the stylesheet
Returns:the number of byte written or -1 in case of failure.

Function: xsltSaveResultToFd

int	xsltSaveResultToFd		(int fd, 
xmlDocPtr result,
xsltStylesheetPtr style)

Save the result @result obtained by applying the @style stylesheet to an open file descriptor This does not close the descriptor.

fd:a file descriptor
result:the result xmlDocPtr
style:the stylesheet
Returns:the number of bytes written or -1 in case of failure.

Function: xsltSaveResultToFile

int	xsltSaveResultToFile		(FILE * file, 
xmlDocPtr result,
xsltStylesheetPtr style)

Save the result @result obtained by applying the @style stylesheet to an open FILE * I/O. This does not close the FILE @file

file:a FILE * I/O
result:the result xmlDocPtr
style:the stylesheet
Returns:the number of bytes written or -1 in case of failure.

Function: xsltSaveResultToFilename

int	xsltSaveResultToFilename	(const char * URL, 
xmlDocPtr result,
xsltStylesheetPtr style,
int compression)

Save the result @result obtained by applying the @style stylesheet to a file or @URL

URL:a filename or URL
result:the result xmlDocPtr
style:the stylesheet
compression:the compression factor (0 - 9 included)
Returns:the number of byte written or -1 in case of failure.

Function: xsltSaveResultToString

int	xsltSaveResultToString		(xmlChar ** doc_txt_ptr, 
int * doc_txt_len,
xmlDocPtr result,
xsltStylesheetPtr style)

Save the result @result obtained by applying the @style stylesheet to a new allocated string.

doc_txt_ptr:Memory pointer for allocated XML text
doc_txt_len:Length of the generated XML text
result:the result xmlDocPtr
style:the stylesheet
Returns:0 in case of success and -1 in case of error

Function: xsltSetCtxtParseOptions

int	xsltSetCtxtParseOptions		(xsltTransformContextPtr ctxt, 
int options)

Change the default parser option passed by the XSLT engine to the parser when using document() loading.

ctxt:a XSLT process context
options:a combination of libxml2 xmlParserOption
Returns:the previous options or -1 in case of error

Function: xsltSetCtxtSortFunc

void	xsltSetCtxtSortFunc		(xsltTransformContextPtr ctxt, 
xsltSortFunc handler)

Function to set the handler for XSLT sorting for the specified context. If the handler is NULL, then the global sort function will be called

ctxt:a XSLT process context
handler:the new handler function

Function: xsltSetDebuggerCallbacks

int	xsltSetDebuggerCallbacks	(int no, 
void * block)

This function allow to plug a debugger into the XSLT library @block points to a block of memory containing the address of @no callback routines.

no:number of callbacks
block:the block of callbacks
Returns:0 in case of success and -1 in case of error

Function: xsltSetDebuggerStatus

void	xsltSetDebuggerStatus		(int value)

This function sets the value of xslDebugStatus.

value:the value to be set

Function: xsltSetGenericDebugFunc

void	xsltSetGenericDebugFunc		(void * ctx, 
xmlGenericErrorFunc handler)

Function to reset the handler and the error context for out of context error messages. This simply means that @handler will be called for subsequent error messages while not parsing or validating. And @ctx will be passed as first argument to @handler One can simply force messages to be emitted to another FILE * than stderr by setting @ctx to this file handle and @handler to NULL.

ctx:the new error handling context
handler:the new handler function

Function: xsltSetGenericErrorFunc

void	xsltSetGenericErrorFunc		(void * ctx, 
xmlGenericErrorFunc handler)

Function to reset the handler and the error context for out of context error messages. This simply means that @handler will be called for subsequent error messages while not parsing nor validating. And @ctx will be passed as first argument to @handler One can simply force messages to be emitted to another FILE * than stderr by setting @ctx to this file handle and @handler to NULL.

ctx:the new error handling context
handler:the new handler function

Function: xsltSetSortFunc

void	xsltSetSortFunc			(xsltSortFunc handler)

Function to reset the global handler for XSLT sorting. If the handler is NULL, the default sort function will be used.

handler:the new handler function

Function: xsltSetTransformErrorFunc

void	xsltSetTransformErrorFunc	(xsltTransformContextPtr ctxt, 
void * ctx,
xmlGenericErrorFunc handler)

Function to reset the handler and the error context for out of context error messages specific to a given XSLT transromation. This simply means that @handler will be called for subsequent error messages while running the transformation.

ctxt:the XSLT transformation context
ctx:the new error handling context
handler:the new handler function

Function: xsltSplitQName

const xmlChar *	xsltSplitQName		(xmlDictPtr dict, 
const xmlChar * name,
const xmlChar ** prefix)

Split QNames into prefix and local names, both allocated from a dictionary.

dict:a dictionary
name:the full QName
prefix:the return value
Returns:the localname or NULL in case of error.

Function: xsltTimestamp

long	xsltTimestamp			(void)

Used for gathering profiling data

Returns:the number of tenth of milliseconds since the beginning of the profiling

Function: xsltTransformError

void	xsltTransformError		(xsltTransformContextPtr ctxt, 
xsltStylesheetPtr style,
xmlNodePtr node,
const char * msg,
... ...)

Display and format an error messages, gives file, line, position and extra parameters, will use the specific transformation context if available

ctxt:an XSLT transformation context
style:the XSLT stylesheet used
node:the current node in the stylesheet
msg:the message to display/transmit
...:extra parameters for the message display

Function: xsltXPathCompile

xmlXPathCompExprPtr	xsltXPathCompile	(xsltStylesheetPtr style, 
const xmlChar * str)

Compile an XPath expression

style:the stylesheet
str:the XPath expression
Returns:the xmlXPathCompExprPtr resulting from the compilation or NULL. the caller has to free the object.

Function: xsltXPathCompileFlags

xmlXPathCompExprPtr	xsltXPathCompileFlags	(xsltStylesheetPtr style, 
const xmlChar * str,
int flags)

Compile an XPath expression

style:the stylesheet
str:the XPath expression
flags:extra compilation flags to pass down to libxml2 XPath
Returns:the xmlXPathCompExprPtr resulting from the compilation or NULL. the caller has to free the object.

Daniel Veillard

PK|0]VR9++html/libxslt-keys.htmlnu[ Module keys from libxslt
Action against software patentsGNOME2 LogoW3C logoRed Hat Logo
Made with Libxslt Logo

The XSLT C library for GNOME

Module keys from libxslt

API Menu
Related links
API Indexes

implementation of the key mechanims.

Table of Contents

#define NODE_IS_KEYED
int	xsltAddKey			(xsltStylesheetPtr style, 
const xmlChar * name,
const xmlChar * nameURI,
const xmlChar * match,
const xmlChar * use,
xmlNodePtr inst)
void	xsltFreeDocumentKeys		(xsltDocumentPtr idoc)
void	xsltFreeKeys			(xsltStylesheetPtr style)
xmlNodeSetPtr	xsltGetKey		(xsltTransformContextPtr ctxt, 
const xmlChar * name,
const xmlChar * nameURI,
const xmlChar * value)
void	xsltInitCtxtKeys		(xsltTransformContextPtr ctxt, 
xsltDocumentPtr idoc)

Description

Macro: NODE_IS_KEYED

#define NODE_IS_KEYED

check for bit 15 set

Function: xsltAddKey

int	xsltAddKey			(xsltStylesheetPtr style, 
const xmlChar * name,
const xmlChar * nameURI,
const xmlChar * match,
const xmlChar * use,
xmlNodePtr inst)

add a key definition to a stylesheet

style:an XSLT stylesheet
name:the key name or NULL
nameURI:the name URI or NULL
match:the match value
use:the use value
inst:the key instruction
Returns:0 in case of success, and -1 in case of failure.

Function: xsltFreeDocumentKeys

void	xsltFreeDocumentKeys		(xsltDocumentPtr idoc)

Free the keys associated to a document

idoc:a XSLT document

Function: xsltFreeKeys

void	xsltFreeKeys			(xsltStylesheetPtr style)

Free up the memory used by XSLT keys in a stylesheet

style:an XSLT stylesheet

Function: xsltGetKey

xmlNodeSetPtr	xsltGetKey		(xsltTransformContextPtr ctxt, 
const xmlChar * name,
const xmlChar * nameURI,
const xmlChar * value)

Looks up a key of the in current source doc (the document info on @ctxt->document). Computes the key if not already done for the current source doc.

ctxt:an XSLT transformation context
name:the key name or NULL
nameURI:the name URI or NULL
value:the key value to look for
Returns:the nodeset resulting from the query or NULL

Function: xsltInitCtxtKeys

void	xsltInitCtxtKeys		(xsltTransformContextPtr ctxt, 
xsltDocumentPtr idoc)

Computes all the keys tables for the current input document. Should be done before global varibales are initialized. NOTE: Not used anymore in the refactored code.

ctxt:an XSLT transformation context
idoc:a document info

Daniel Veillard

PK|0]}fDnnhtml/libxslt-xslt.htmlnu[ Module xslt from libxslt
Action against software patentsGNOME2 LogoW3C logoRed Hat Logo
Made with Libxslt Logo

The XSLT C library for GNOME

Module xslt from libxslt

API Menu
Related links
API Indexes

Interfaces, constants and types related to the XSLT engine

Table of Contents

#define XSLT_DEFAULT_URL
#define XSLT_DEFAULT_VENDOR
#define XSLT_DEFAULT_VERSION
#define XSLT_NAMESPACE
#define XSLT_PARSE_OPTIONS
void	xsltCleanupGlobals		(void)
void	xsltInit			(void)

Description

Macro: XSLT_DEFAULT_URL

#define XSLT_DEFAULT_URL

The XSLT "vendor" URL for this processor.

Macro: XSLT_DEFAULT_VENDOR

#define XSLT_DEFAULT_VENDOR

The XSLT "vendor" string for this processor.

Macro: XSLT_DEFAULT_VERSION

#define XSLT_DEFAULT_VERSION

The default version of XSLT supported.

Macro: XSLT_NAMESPACE

#define XSLT_NAMESPACE

The XSLT specification namespace.

Macro: XSLT_PARSE_OPTIONS

#define XSLT_PARSE_OPTIONS

The set of options to pass to an xmlReadxxx when loading files for XSLT consumption.

Function: xsltCleanupGlobals

void	xsltCleanupGlobals		(void)

Unregister all global variables set up by the XSLT library

Function: xsltInit

void	xsltInit			(void)

Initializes the processor (e.g. registers built-in extensions, etc.)

Daniel Veillard

PK|0]??  "html/libxslt-numbersInternals.htmlnu[ Module numbersInternals from libxslt
Action against software patentsGNOME2 LogoW3C logoRed Hat Logo
Made with Libxslt Logo

The XSLT C library for GNOME

Module numbersInternals from libxslt

API Menu
Related links
API Indexes

Implementation of the XSLT number functions

Table of Contents

Structure xsltFormatNumberInfo
struct _xsltFormatNumberInfo
Typedef xsltFormatNumberInfo * xsltFormatNumberInfoPtr
Structure xsltNumberData
struct _xsltNumberData
Typedef xsltNumberData * xsltNumberDataPtr

Description

Structure xsltFormatNumberInfo

Structure xsltFormatNumberInfo
struct _xsltFormatNumberInfo { int integer_hash : Number of '#' in integer part int integer_digits : Number of '0' in integer part int frac_digits : Number of '0' in fractional part int frac_hash : Number of '#' in fractional part int group : Number of chars per display 'group' int multiplier : Scaling for percent or permille char add_decimal : Flag for whether decimal point appears char is_multiplier_set : Flag to catch multiple occurences of pe char is_negative_pattern : Flag for processing -ve prefix/suffix }

Structure xsltNumberData

Structure xsltNumberData
struct _xsltNumberData { const xmlChar * level const xmlChar * count const xmlChar * from const xmlChar * value const xmlChar * format int has_format int digitsPerGroup int groupingCharacter int groupingCharacterLen xmlDocPtr doc xmlNodePtr node struct _xsltCompMatch * countPat struct _xsltCompMatch * fromPat : * accelerators * }

Daniel Veillard

PK|0]|QQhtml/libxslt-templates.htmlnu[ Module templates from libxslt
Action against software patentsGNOME2 LogoW3C logoRed Hat Logo
Made with Libxslt Logo

The XSLT C library for GNOME

Module templates from libxslt

API Menu
Related links
API Indexes

This set of routine encapsulates XPath calls and Attribute Value Templates evaluation.

Table of Contents

xmlAttrPtr	xsltAttrListTemplateProcess	(xsltTransformContextPtr ctxt, 
xmlNodePtr target,
xmlAttrPtr attrs)
xmlAttrPtr	xsltAttrTemplateProcess	(xsltTransformContextPtr ctxt, 
xmlNodePtr target,
xmlAttrPtr attr)
xmlChar *	xsltAttrTemplateValueProcess	(xsltTransformContextPtr ctxt, 
const xmlChar * str)
xmlChar *	xsltAttrTemplateValueProcessNode	(xsltTransformContextPtr ctxt, 
const xmlChar * str,
xmlNodePtr inst)
xmlChar *	xsltEvalAttrValueTemplate	(xsltTransformContextPtr ctxt, 
xmlNodePtr inst,
const xmlChar * name,
const xmlChar * ns)
const xmlChar *	xsltEvalStaticAttrValueTemplate	(xsltStylesheetPtr style, 
xmlNodePtr inst,
const xmlChar * name,
const xmlChar * ns,
int * found)
xmlChar *	xsltEvalTemplateString	(xsltTransformContextPtr ctxt, 
xmlNodePtr contextNode,
xmlNodePtr inst)
int	xsltEvalXPathPredicate		(xsltTransformContextPtr ctxt, 
xmlXPathCompExprPtr comp,
xmlNsPtr * nsList,
int nsNr)
xmlChar *	xsltEvalXPathString	(xsltTransformContextPtr ctxt, 
xmlXPathCompExprPtr comp)
xmlChar *	xsltEvalXPathStringNs	(xsltTransformContextPtr ctxt, 
xmlXPathCompExprPtr comp,
int nsNr,
xmlNsPtr * nsList)
xmlNodePtr *	xsltTemplateProcess	(xsltTransformContextPtr ctxt, 
xmlNodePtr node)

Description

Function: xsltAttrListTemplateProcess

xmlAttrPtr	xsltAttrListTemplateProcess	(xsltTransformContextPtr ctxt, 
xmlNodePtr target,
xmlAttrPtr attrs)

Processes all attributes of a Literal Result Element. Attribute references are applied via xsl:use-attribute-set attributes. Copies all non XSLT-attributes over to the @target element and evaluates Attribute Value Templates. Called by xsltApplySequenceConstructor() (transform.c).

ctxt:the XSLT transformation context
target:the element where the attributes will be grafted
attrs:the first attribute
Returns:a new list of attribute nodes, or NULL in case of error. (Don't assign the result to @target->properties; if the result is NULL, you'll get memory leaks, since the attributes will be disattached.)

Function: xsltAttrTemplateProcess

xmlAttrPtr	xsltAttrTemplateProcess	(xsltTransformContextPtr ctxt, 
xmlNodePtr target,
xmlAttrPtr attr)

Process one attribute of a Literal Result Element (in the stylesheet). Evaluates Attribute Value Templates and copies the attribute over to the result element. This does *not* process attribute sets (xsl:use-attribute-set).

ctxt:the XSLT transformation context
target:the element where the attribute will be grafted
attr:the attribute node of a literal result element
Returns:the generated attribute node.

Function: xsltAttrTemplateValueProcess

xmlChar *	xsltAttrTemplateValueProcess	(xsltTransformContextPtr ctxt, 
const xmlChar * str)

Process the given node and return the new string value.

ctxt:the XSLT transformation context
str:the attribute template node value
Returns:the computed string value or NULL, must be deallocated by the caller.

Function: xsltAttrTemplateValueProcessNode

xmlChar *	xsltAttrTemplateValueProcessNode	(xsltTransformContextPtr ctxt, 
const xmlChar * str,
xmlNodePtr inst)

Process the given string, allowing to pass a namespace mapping context and return the new string value. Called by: - xsltAttrTemplateValueProcess() (templates.c) - xsltEvalAttrValueTemplate() (templates.c) QUESTION: Why is this function public? It is not used outside of templates.c.

ctxt:the XSLT transformation context
str:the attribute template node value
inst:the instruction (or LRE) in the stylesheet holding the attribute with an AVT
Returns:the computed string value or NULL, must be deallocated by the caller.

Function: xsltEvalAttrValueTemplate

xmlChar *	xsltEvalAttrValueTemplate	(xsltTransformContextPtr ctxt, 
xmlNodePtr inst,
const xmlChar * name,
const xmlChar * ns)

Evaluate a attribute value template, i.e. the attribute value can contain expressions contained in curly braces ({}) and those are substituted by they computed value.

ctxt:the XSLT transformation context
inst:the instruction (or LRE) in the stylesheet holding the attribute with an AVT
name:the attribute QName
ns:the attribute namespace URI
Returns:the computed string value or NULL, must be deallocated by the caller.

Function: xsltEvalStaticAttrValueTemplate

const xmlChar *	xsltEvalStaticAttrValueTemplate	(xsltStylesheetPtr style, 
xmlNodePtr inst,
const xmlChar * name,
const xmlChar * ns,
int * found)

Check if an attribute value template has a static value, i.e. the attribute value does not contain expressions contained in curly braces ({})

style:the XSLT stylesheet
inst:the instruction (or LRE) in the stylesheet holding the attribute with an AVT
name:the attribute Name
ns:the attribute namespace URI
found:indicator whether the attribute is present
Returns:the static string value or NULL, must be deallocated by the caller.

Function: xsltEvalTemplateString

xmlChar *	xsltEvalTemplateString	(xsltTransformContextPtr ctxt, 
xmlNodePtr contextNode,
xmlNodePtr inst)

Processes the sequence constructor of the given instruction on @contextNode and converts the resulting tree to a string. This is needed by e.g. xsl:comment and xsl:processing-instruction.

ctxt:the XSLT transformation context
contextNode:the current node in the source tree
inst:the XSLT instruction (xsl:comment, xsl:processing-instruction)
Returns:the computed string value or NULL; it's up to the caller to free the result.

Function: xsltEvalXPathPredicate

int	xsltEvalXPathPredicate		(xsltTransformContextPtr ctxt, 
xmlXPathCompExprPtr comp,
xmlNsPtr * nsList,
int nsNr)

Process the expression using XPath and evaluate the result as an XPath predicate

ctxt:the XSLT transformation context
comp:the XPath compiled expression
nsList:the namespaces in scope
nsNr:the number of namespaces in scope
Returns:1 is the predicate was true, 0 otherwise

Function: xsltEvalXPathString

xmlChar *	xsltEvalXPathString	(xsltTransformContextPtr ctxt, 
xmlXPathCompExprPtr comp)

Process the expression using XPath and get a string

ctxt:the XSLT transformation context
comp:the compiled XPath expression
Returns:the computed string value or NULL, must be deallocated by the caller.

Function: xsltEvalXPathStringNs

xmlChar *	xsltEvalXPathStringNs	(xsltTransformContextPtr ctxt, 
xmlXPathCompExprPtr comp,
int nsNr,
xmlNsPtr * nsList)

Process the expression using XPath, allowing to pass a namespace mapping context and get a string

ctxt:the XSLT transformation context
comp:the compiled XPath expression
nsNr:the number of namespaces in the list
nsList:the list of in-scope namespaces to use
Returns:the computed string value or NULL, must be deallocated by the caller.

Function: xsltTemplateProcess

xmlNodePtr *	xsltTemplateProcess	(xsltTransformContextPtr ctxt, 
xmlNodePtr node)

Obsolete. Don't use it.

ctxt:the XSLT transformation context
node:the attribute template node
Returns:NULL.

Daniel Veillard

PK|0]lkhtml/right.pngnu[PNG  IHDRw=bKGD pHYs  ~tIME2 I%=eIDATx!o@.'**M0$$?1~vIeEuLl&4䝠Bݛ|>$ݶoc Module documents from libxslt
Action against software patentsGNOME2 LogoW3C logoRed Hat Logo
Made with Libxslt Logo

The XSLT C library for GNOME

Module documents from libxslt

API Menu
Related links
API Indexes

implements document loading and cache (multiple document() reference for the same resources must be equal.

Table of Contents

Enum xsltLoadType
Function type: xsltDocLoaderFunc
xmlDocPtr	xsltDocLoaderFunc	(const xmlChar * URI, 
xmlDictPtr dict,
int options,
void * ctxt,
xsltLoadType type)
xsltDocumentPtr	xsltFindDocument	(xsltTransformContextPtr ctxt, 
xmlDocPtr doc)
void	xsltFreeDocuments		(xsltTransformContextPtr ctxt)
void	xsltFreeStyleDocuments		(xsltStylesheetPtr style)
xsltDocumentPtr	xsltLoadDocument	(xsltTransformContextPtr ctxt, 
const xmlChar * URI)
xsltDocumentPtr	xsltLoadStyleDocument	(xsltStylesheetPtr style, 
const xmlChar * URI)
xsltDocumentPtr	xsltNewDocument		(xsltTransformContextPtr ctxt, 
xmlDocPtr doc)
xsltDocumentPtr	xsltNewStyleDocument	(xsltStylesheetPtr style, 
xmlDocPtr doc)
void	xsltSetLoaderFunc		(xsltDocLoaderFunc f)

Description

Enum xsltLoadType

Enum xsltLoadType {
    XSLT_LOAD_START = 0 : loading for a top stylesheet
    XSLT_LOAD_STYLESHEET = 1 : loading for a stylesheet include/import
    XSLT_LOAD_DOCUMENT = 2 : loading document at transformation time
}

Function type: xsltDocLoaderFunc

Function type: xsltDocLoaderFunc
xmlDocPtr	xsltDocLoaderFunc	(const xmlChar * URI, 
xmlDictPtr dict,
int options,
void * ctxt,
xsltLoadType type)

An xsltDocLoaderFunc is a signature for a function which can be registered to load document not provided by the compilation or transformation API themselve, for example when an xsl:import, xsl:include is found at compilation time or when a document() call is made at runtime.

URI:the URI of the document to load
dict:the dictionary to use when parsing that document
options:parsing options, a set of xmlParserOption
ctxt:the context, either a stylesheet or a transformation context
type:the xsltLoadType indicating the kind of loading required
Returns:the pointer to the document (which will be modified and freed by the engine later), or NULL in case of error.

Function: xsltFindDocument

xsltDocumentPtr	xsltFindDocument	(xsltTransformContextPtr ctxt, 
xmlDocPtr doc)

Try to find a document within the XSLT transformation context. This will not find document infos for temporary Result Tree Fragments.

ctxt:an XSLT transformation context
doc:a parsed XML document
Returns:the desired xsltDocumentPtr or NULL in case of error

Function: xsltFreeDocuments

void	xsltFreeDocuments		(xsltTransformContextPtr ctxt)

Free up all the space used by the loaded documents

ctxt:an XSLT transformation context

Function: xsltFreeStyleDocuments

void	xsltFreeStyleDocuments		(xsltStylesheetPtr style)

Frees the node-trees (and xsltDocument structures) of all stylesheet-modules of the stylesheet-level represented by the given @style.

style:an XSLT stylesheet (representing a stylesheet-level)

Function: xsltLoadDocument

xsltDocumentPtr	xsltLoadDocument	(xsltTransformContextPtr ctxt, 
const xmlChar * URI)

Try to load a document (not a stylesheet) within the XSLT transformation context

ctxt:an XSLT transformation context
URI:the computed URI of the document
Returns:the new xsltDocumentPtr or NULL in case of error

Function: xsltLoadStyleDocument

xsltDocumentPtr	xsltLoadStyleDocument	(xsltStylesheetPtr style, 
const xmlChar * URI)

Try to load a stylesheet document within the XSLT transformation context

style:an XSLT style sheet
URI:the computed URI of the document
Returns:the new xsltDocumentPtr or NULL in case of error

Function: xsltNewDocument

xsltDocumentPtr	xsltNewDocument		(xsltTransformContextPtr ctxt, 
xmlDocPtr doc)

Register a new document, apply key computations

ctxt:an XSLT transformation context (or NULL)
doc:a parsed XML document
Returns:a handler to the document

Function: xsltNewStyleDocument

xsltDocumentPtr	xsltNewStyleDocument	(xsltStylesheetPtr style, 
xmlDocPtr doc)

Register a new document, apply key computations

style:an XSLT style sheet
doc:a parsed XML document
Returns:a handler to the document

Function: xsltSetLoaderFunc

void	xsltSetLoaderFunc		(xsltDocLoaderFunc f)

Set the new function to load document, if NULL it resets it to the default function.

f:the new function to handle document loading.

Daniel Veillard

PK|0]==html/libxslt-namespaces.htmlnu[ Module namespaces from libxslt
Action against software patentsGNOME2 LogoW3C logoRed Hat Logo
Made with Libxslt Logo

The XSLT C library for GNOME

Module namespaces from libxslt

API Menu
Related links
API Indexes

set of function easing the processing and generation of namespace nodes in XSLT.

Table of Contents

#define UNDEFINED_DEFAULT_NS
xmlNsPtr	xsltCopyNamespace	(xsltTransformContextPtr ctxt, 
xmlNodePtr elem,
xmlNsPtr ns)
xmlNsPtr	xsltCopyNamespaceList	(xsltTransformContextPtr ctxt, 
xmlNodePtr node,
xmlNsPtr cur)
void	xsltFreeNamespaceAliasHashes	(xsltStylesheetPtr style)
xmlNsPtr	xsltGetNamespace	(xsltTransformContextPtr ctxt, 
xmlNodePtr cur,
xmlNsPtr ns,
xmlNodePtr out)
xmlNsPtr	xsltGetPlainNamespace	(xsltTransformContextPtr ctxt, 
xmlNodePtr cur,
xmlNsPtr ns,
xmlNodePtr out)
xmlNsPtr	xsltGetSpecialNamespace	(xsltTransformContextPtr ctxt, 
xmlNodePtr invocNode,
const xmlChar * nsName,
const xmlChar * nsPrefix,
xmlNodePtr target)
void	xsltNamespaceAlias		(xsltStylesheetPtr style, 
xmlNodePtr node)

Description

Macro: UNDEFINED_DEFAULT_NS

#define UNDEFINED_DEFAULT_NS

Special value for undefined namespace, internal

Function: xsltCopyNamespace

xmlNsPtr	xsltCopyNamespace	(xsltTransformContextPtr ctxt, 
xmlNodePtr elem,
xmlNsPtr ns)

Copies a namespace node (declaration). If @elem is not NULL, then the new namespace will be declared on @elem.

ctxt:a transformation context
elem:the target element node
ns:the namespace node
Returns:a new xmlNsPtr, or NULL in case of an error.

Function: xsltCopyNamespaceList

xmlNsPtr	xsltCopyNamespaceList	(xsltTransformContextPtr ctxt, 
xmlNodePtr node,
xmlNsPtr cur)

Do a copy of an namespace list. If @node is non-NULL the new namespaces are added automatically. This handles namespaces aliases. This function is intended only for *internal* use at transformation-time for copying ns-declarations of Literal Result Elements. Called by: xsltCopyTreeInternal() (transform.c) xsltShallowCopyElem() (transform.c) REVISIT: This function won't be used in the refactored code.

ctxt:a transformation context
node:the target node
cur:the first namespace
Returns:a new xmlNsPtr, or NULL in case of error.

Function: xsltFreeNamespaceAliasHashes

void	xsltFreeNamespaceAliasHashes	(xsltStylesheetPtr style)

Free up the memory used by namespaces aliases

style:an XSLT stylesheet

Function: xsltGetNamespace

xmlNsPtr	xsltGetNamespace	(xsltTransformContextPtr ctxt, 
xmlNodePtr cur,
xmlNsPtr ns,
xmlNodePtr out)

Find a matching (prefix and ns-name) ns-declaration for the requested @ns->prefix and @ns->href in the result tree. If none is found then a new ns-declaration will be added to @resultElem. If, in this case, the given prefix is already in use, then a ns-declaration with a modified ns-prefix be we created. Called by: - xsltCopyPropList() (*not* anymore) - xsltShallowCopyElement() - xsltCopyTreeInternal() (*not* anymore) - xsltApplySequenceConstructor() (*not* in the refactored code), - xsltElement() (*not* anymore)

ctxt:a transformation context
cur:the input node
ns:the namespace
out:the output node (or its parent)
Returns:a namespace declaration or NULL in case of namespace fixup failures or API or internal errors.

Function: xsltGetPlainNamespace

xmlNsPtr	xsltGetPlainNamespace	(xsltTransformContextPtr ctxt, 
xmlNodePtr cur,
xmlNsPtr ns,
xmlNodePtr out)

Obsolete. *Not* called by any Libxslt/Libexslt function. Exaclty the same as xsltGetNamespace().

ctxt:a transformation context
cur:the input node
ns:the namespace
out:the result element
Returns:a namespace declaration or NULL in case of namespace fixup failures or API or internal errors.

Function: xsltGetSpecialNamespace

xmlNsPtr	xsltGetSpecialNamespace	(xsltTransformContextPtr ctxt, 
xmlNodePtr invocNode,
const xmlChar * nsName,
const xmlChar * nsPrefix,
xmlNodePtr target)

Find a matching (prefix and ns-name) ns-declaration for the requested @nsName and @nsPrefix in the result tree. If none is found then a new ns-declaration will be added to @resultElem. If, in this case, the given prefix is already in use, then a ns-declaration with a modified ns-prefix be we created. Note that this function's priority is to preserve ns-prefixes; it will only change a prefix if there's a namespace clash. If both @nsName and @nsPrefix are NULL, then this will try to "undeclare" a default namespace by declaring an xmlns="".

ctxt:the transformation context
invocNode:the invoking node; e.g. a literal result element/attr; only used for error reports
nsName:the namespace name (or NULL)
nsPrefix:the suggested namespace prefix (or NULL)
target:the result element on which to anchor a namespace
Returns:a namespace declaration or NULL.

Function: xsltNamespaceAlias

void	xsltNamespaceAlias		(xsltStylesheetPtr style, 
xmlNodePtr node)

Read the stylesheet-prefix and result-prefix attributes, register them as well as the corresponding namespace.

style:the XSLT stylesheet
node:the xsl:namespace-alias node

Daniel Veillard

PK|0]eRhtml/libxslt-lib.htmlnu[ Reference Manual for libxslt
Action against software patentsGNOME2 LogoW3C logoRed Hat Logo
Made with Libxslt Logo

The XSLT C library for GNOME

Reference Manual for libxslt

API Menu
Related links
API Indexes

Table of Contents

  • attributes: interface for the XSLT attribute handling
  • documents: interface for the document handling
  • extensions: interface for the extension support
  • extra: interface for the non-standard features
  • functions: interface for the XSLT functions not from XPath
  • imports: interface for the XSLT import support
  • keys: interface for the key matching used in key() and template matches.
  • namespaces: interface for the XSLT namespace handling
  • numbersInternals: Implementation of the XSLT number functions
  • pattern: interface for the pattern matching used in template matches.
  • preproc: precomputing stylesheets
  • security: interface for the libxslt security framework
  • templates: interface for the template processing
  • transform: the XSLT engine transformation part.
  • variables: interface for the variable matching and lookup.
  • xslt: Interfaces, constants and types related to the XSLT engine
  • xsltInternals: internal data structures, constants and functions
  • xsltexports: macros for marking symbols as exportable/importable.
  • xsltlocale: Locale handling
  • xsltutils: set of utilities for the XSLT engine

Daniel Veillard

PK|0] ,,html/libxslt-xsltlocale.htmlnu[ Module xsltlocale from libxslt
Action against software patentsGNOME2 LogoW3C logoRed Hat Logo
Made with Libxslt Logo

The XSLT C library for GNOME

Module xsltlocale from libxslt

API Menu
Related links
API Indexes

Interfaces for locale handling. Needed for language dependent sorting.

Table of Contents

#define XSLT_LOCALE_NONE
#define XSLT_LOCALE_POSIX
#define XSLT_LOCALE_WINAPI
Typedef void * xsltLocale
Typedef xmlChar xsltLocaleChar
void	xsltFreeLocale			(xsltLocale locale)
void	xsltFreeLocales			(void)
int	xsltLocaleStrcmp		(xsltLocale locale, 
const xsltLocaleChar * str1,
const xsltLocaleChar * str2)
xsltLocale	xsltNewLocale		(const xmlChar * languageTag)
xsltLocaleChar *	xsltStrxfrm	(xsltLocale locale, 
const xmlChar * string)

Description

Macro: XSLT_LOCALE_NONE

#define XSLT_LOCALE_NONE

Macro indicating that there's no extended locale support

Macro: XSLT_LOCALE_POSIX

#define XSLT_LOCALE_POSIX

Macro indicating to use POSIX locale extensions

Macro: XSLT_LOCALE_WINAPI

#define XSLT_LOCALE_WINAPI

Macro indicating to use WinAPI for extended locale support

Function: xsltFreeLocale

void	xsltFreeLocale			(xsltLocale locale)

Frees a locale created with xsltNewLocale

locale:the locale to free

Function: xsltFreeLocales

void	xsltFreeLocales			(void)

Cleanup function for the locale support on shutdown

Function: xsltLocaleStrcmp

int	xsltLocaleStrcmp		(xsltLocale locale, 
const xsltLocaleChar * str1,
const xsltLocaleChar * str2)

Compares two strings transformed with xsltStrxfrm

locale:a locale identifier
str1:a string transformed with xsltStrxfrm
str2:a string transformed with xsltStrxfrm
Returns:a value < 0 if str1 sorts before str2, a value > 0 if str1 sorts after str2, 0 if str1 and str2 are equal wrt sorting

Function: xsltNewLocale

xsltLocale	xsltNewLocale		(const xmlChar * languageTag)

Creates a new locale of an opaque system dependent type based on the language tag.

languageTag:RFC 3066 language tag
Returns:the locale or NULL on error or if no matching locale was found

Function: xsltStrxfrm

xsltLocaleChar *	xsltStrxfrm	(xsltLocale locale, 
const xmlChar * string)

Transforms a string according to locale. The transformed string must then be compared with xsltLocaleStrcmp and freed with xmlFree.

locale:locale created with xsltNewLocale
string:UTF-8 string to transform
Returns:the transformed string or NULL on error

Daniel Veillard

PK|0]| html/home.pngnu[PNG  IHDRw=bKGD pHYs  ~tIME1KvIDATxՕkq?rCp ~CnpCAAJ .B-\'G]:ܠC -(8 Ԁ!fDғklbRoyxwpðIJ<of_-@RHf֟t^ښ$Q|pgv;X^^&s(bwwZF9&3඙ ^IRZUE.0Z]]U PYM8HGIekqqҀ! $۬3n e{-/seeeÌXOͷ$8==USQRR'9-s+B^ Cەs+%<7W :2IENDB`PK|0]G''html/libxslt-extra.htmlnu[ Module extra from libxslt
Action against software patentsGNOME2 LogoW3C logoRed Hat Logo
Made with Libxslt Logo

The XSLT C library for GNOME

Module extra from libxslt

API Menu
Related links
API Indexes

implement some extension outside the XSLT namespace but not EXSLT with is in a different library.

Table of Contents

#define XSLT_LIBXSLT_NAMESPACE
#define XSLT_SAXON_NAMESPACE
#define XSLT_XALAN_NAMESPACE
#define XSLT_XT_NAMESPACE
void	xsltDebug			(xsltTransformContextPtr ctxt, 
xmlNodePtr node,
xmlNodePtr inst,
xsltStylePreCompPtr comp)
void	xsltFunctionNodeSet		(xmlXPathParserContextPtr ctxt, 
int nargs)
void	xsltRegisterAllExtras		(void)
void	xsltRegisterExtras		(xsltTransformContextPtr ctxt)

Description

Macro: XSLT_LIBXSLT_NAMESPACE

#define XSLT_LIBXSLT_NAMESPACE

This is the libxslt namespace for specific extensions.

Macro: XSLT_SAXON_NAMESPACE

#define XSLT_SAXON_NAMESPACE

This is Michael Kay's Saxon processor namespace for extensions.

Macro: XSLT_XALAN_NAMESPACE

#define XSLT_XALAN_NAMESPACE

This is the Apache project XALAN processor namespace for extensions.

Macro: XSLT_XT_NAMESPACE

#define XSLT_XT_NAMESPACE

This is James Clark's XT processor namespace for extensions.

Function: xsltDebug

void	xsltDebug			(xsltTransformContextPtr ctxt, 
xmlNodePtr node,
xmlNodePtr inst,
xsltStylePreCompPtr comp)

Process an debug node

ctxt:an XSLT processing context
node:The current node
inst:the instruction in the stylesheet
comp:precomputed informations

Function: xsltFunctionNodeSet

void	xsltFunctionNodeSet		(xmlXPathParserContextPtr ctxt, 
int nargs)

Implement the node-set() XSLT function node-set node-set(result-tree) This function is available in libxslt, saxon or xt namespace.

ctxt:the XPath Parser context
nargs:the number of arguments

Function: xsltRegisterAllExtras

void	xsltRegisterAllExtras		(void)

Registers the built-in extensions

Function: xsltRegisterExtras

void	xsltRegisterExtras		(xsltTransformContextPtr ctxt)

Registers the built-in extensions. This function is deprecated, use xsltRegisterAllExtras instead.

ctxt:a XSLT process context

Daniel Veillard

PK|0](dOOhtml/libxslt-xsltexports.htmlnu[ Module xsltexports from libxslt
Action against software patentsGNOME2 LogoW3C logoRed Hat Logo
Made with Libxslt Logo

The XSLT C library for GNOME

Module xsltexports from libxslt

API Menu
Related links
API Indexes

macros for marking symbols as exportable/importable.

Table of Contents

#define LIBXSLT_PUBLIC
#define XSLTCALL
#define XSLTPUBFUN
#define XSLTPUBVAR
#define _REENTRANT

Description

Macro: LIBXSLT_PUBLIC

#define LIBXSLT_PUBLIC

Macro: XSLTCALL

#define XSLTCALL

Macro: XSLTPUBFUN

#define XSLTPUBFUN

Macro: XSLTPUBVAR

#define XSLTPUBVAR

Macro: _REENTRANT

#define _REENTRANT

Daniel Veillard

PK|0]̫{{html/libxslt-transform.htmlnu[ Module transform from libxslt
Action against software patentsGNOME2 LogoW3C logoRed Hat Logo
Made with Libxslt Logo

The XSLT C library for GNOME

Module transform from libxslt

API Menu
Related links
API Indexes

This module implements the bulk of the actual

Table of Contents

void	xslHandleDebugger		(xmlNodePtr cur, 
xmlNodePtr node,
xsltTemplatePtr templ,
xsltTransformContextPtr ctxt)
void	xsltApplyImports		(xsltTransformContextPtr ctxt, 
xmlNodePtr contextNode,
xmlNodePtr inst,
xsltStylePreCompPtr comp)
void	xsltApplyOneTemplate		(xsltTransformContextPtr ctxt, 
xmlNodePtr contextNode,
xmlNodePtr list,
xsltTemplatePtr templ,
xsltStackElemPtr params)
void	xsltApplyStripSpaces		(xsltTransformContextPtr ctxt, 
xmlNodePtr node)
xmlDocPtr	xsltApplyStylesheet	(xsltStylesheetPtr style, 
xmlDocPtr doc,
const char ** params)
xmlDocPtr	xsltApplyStylesheetUser	(xsltStylesheetPtr style, 
xmlDocPtr doc,
const char ** params,
const char * output,
FILE * profile,
xsltTransformContextPtr userCtxt)
void	xsltApplyTemplates		(xsltTransformContextPtr ctxt, 
xmlNodePtr node,
xmlNodePtr inst,
xsltStylePreCompPtr castedComp)
void	xsltAttribute			(xsltTransformContextPtr ctxt, 
xmlNodePtr contextNode,
xmlNodePtr inst,
xsltStylePreCompPtr castedComp)
void	xsltCallTemplate		(xsltTransformContextPtr ctxt, 
xmlNodePtr node,
xmlNodePtr inst,
xsltStylePreCompPtr castedComp)
void	xsltChoose			(xsltTransformContextPtr ctxt, 
xmlNodePtr contextNode,
xmlNodePtr inst,
xsltStylePreCompPtr comp)
void	xsltComment			(xsltTransformContextPtr ctxt, 
xmlNodePtr node,
xmlNodePtr inst,
xsltStylePreCompPtr comp)
void	xsltCopy			(xsltTransformContextPtr ctxt, 
xmlNodePtr node,
xmlNodePtr inst,
xsltStylePreCompPtr castedComp)
void	xsltCopyOf			(xsltTransformContextPtr ctxt, 
xmlNodePtr node,
xmlNodePtr inst,
xsltStylePreCompPtr castedComp)
xmlNodePtr	xsltCopyTextString	(xsltTransformContextPtr ctxt, 
xmlNodePtr target,
const xmlChar * string,
int noescape)
void	xsltDocumentElem		(xsltTransformContextPtr ctxt, 
xmlNodePtr node,
xmlNodePtr inst,
xsltStylePreCompPtr castedComp)
void	xsltElement			(xsltTransformContextPtr ctxt, 
xmlNodePtr node,
xmlNodePtr inst,
xsltStylePreCompPtr castedComp)
void	xsltForEach			(xsltTransformContextPtr ctxt, 
xmlNodePtr contextNode,
xmlNodePtr inst,
xsltStylePreCompPtr castedComp)
void	xsltFreeTransformContext	(xsltTransformContextPtr ctxt)
int	xsltGetXIncludeDefault		(void)
void	xsltIf			(xsltTransformContextPtr ctxt, 
xmlNodePtr contextNode,
xmlNodePtr inst,
xsltStylePreCompPtr castedComp)
void	xsltLocalVariablePop		(xsltTransformContextPtr ctxt, 
int limitNr,
int level)
int	xsltLocalVariablePush		(xsltTransformContextPtr ctxt, 
xsltStackElemPtr variable,
int level)
xsltTransformContextPtr	xsltNewTransformContext	(xsltStylesheetPtr style, 
xmlDocPtr doc)
void	xsltNumber			(xsltTransformContextPtr ctxt, 
xmlNodePtr node,
xmlNodePtr inst,
xsltStylePreCompPtr castedComp)
void	xsltProcessOneNode		(xsltTransformContextPtr ctxt, 
xmlNodePtr contextNode,
xsltStackElemPtr withParams)
void	xsltProcessingInstruction	(xsltTransformContextPtr ctxt, 
xmlNodePtr node,
xmlNodePtr inst,
xsltStylePreCompPtr castedComp)
xmlDocPtr	xsltProfileStylesheet	(xsltStylesheetPtr style, 
xmlDocPtr doc,
const char ** params,
FILE * output)
void	xsltRegisterAllElement		(xsltTransformContextPtr ctxt)
int	xsltRunStylesheet		(xsltStylesheetPtr style, 
xmlDocPtr doc,
const char ** params,
const char * output,
xmlSAXHandlerPtr SAX,
xmlOutputBufferPtr IObuf)
int	xsltRunStylesheetUser		(xsltStylesheetPtr style, 
xmlDocPtr doc,
const char ** params,
const char * output,
xmlSAXHandlerPtr SAX,
xmlOutputBufferPtr IObuf,
FILE * profile,
xsltTransformContextPtr userCtxt)
void	xsltSetXIncludeDefault		(int xinclude)
void	xsltSort			(xsltTransformContextPtr ctxt, 
xmlNodePtr node,
xmlNodePtr inst,
xsltStylePreCompPtr comp)
void	xsltText			(xsltTransformContextPtr ctxt, 
xmlNodePtr node,
xmlNodePtr inst,
xsltStylePreCompPtr comp)
void	xsltValueOf			(xsltTransformContextPtr ctxt, 
xmlNodePtr node,
xmlNodePtr inst,
xsltStylePreCompPtr castedComp)

Description

Function: xslHandleDebugger

void	xslHandleDebugger		(xmlNodePtr cur, 
xmlNodePtr node,
xsltTemplatePtr templ,
xsltTransformContextPtr ctxt)

If either cur or node are a breakpoint, or xslDebugStatus in state where debugging must occcur at this time then transfer control to the xslDebugBreak function

cur:source node being executed
node:data node being processed
templ:temlate that applies to node
ctxt:the xslt transform context

Function: xsltApplyImports

void	xsltApplyImports		(xsltTransformContextPtr ctxt, 
xmlNodePtr contextNode,
xmlNodePtr inst,
xsltStylePreCompPtr comp)

Process the XSLT apply-imports element.

ctxt:an XSLT transformation context
contextNode:the current node in the source tree.
inst:the element node of the XSLT 'apply-imports' instruction
comp:the compiled instruction

Function: xsltApplyOneTemplate

void	xsltApplyOneTemplate		(xsltTransformContextPtr ctxt, 
xmlNodePtr contextNode,
xmlNodePtr list,
xsltTemplatePtr templ,
xsltStackElemPtr params)

Processes a sequence constructor on the current node in the source tree. @params are the already computed variable stack items; this function pushes them on the variable stack, and pops them before exiting; it's left to the caller to free or reuse @params afterwards. The initial states of the variable stack will always be restored before this function exits. NOTE that this does *not* initiate a new distinct variable scope; i.e. variables already on the stack are visible to the process. The caller's side needs to start a new variable scope if needed (e.g. in exsl:function). @templ is obsolete and not used anymore (e.g. <exslt:function> does not provide a @templ); a non-NULL @templ might raise an error in the future. BIG NOTE: This function is not intended to process the content of an xsl:template; it does not expect xsl:param instructions in @list and will report errors if found. Called by: - xsltEvalVariable() (variables.c) - exsltFuncFunctionFunction() (libexsl/functions.c)

ctxt:a XSLT process context
contextNode:the node in the source tree.
list:the nodes of a sequence constructor
templ:not used
params:a set of parameters (xsl:param) or NULL

Function: xsltApplyStripSpaces

void	xsltApplyStripSpaces		(xsltTransformContextPtr ctxt, 
xmlNodePtr node)

Strip the unwanted ignorable spaces from the input tree

ctxt:a XSLT process context
node:the root of the XML tree

Function: xsltApplyStylesheet

xmlDocPtr	xsltApplyStylesheet	(xsltStylesheetPtr style, 
xmlDocPtr doc,
const char ** params)

Apply the stylesheet to the document NOTE: This may lead to a non-wellformed output XML wise !

style:a parsed XSLT stylesheet
doc:a parsed XML document
params:a NULL terminated arry of parameters names/values tuples
Returns:the result document or NULL in case of error

Function: xsltApplyStylesheetUser

xmlDocPtr	xsltApplyStylesheetUser	(xsltStylesheetPtr style, 
xmlDocPtr doc,
const char ** params,
const char * output,
FILE * profile,
xsltTransformContextPtr userCtxt)

Apply the stylesheet to the document and allow the user to provide its own transformation context.

style:a parsed XSLT stylesheet
doc:a parsed XML document
params:a NULL terminated array of parameters names/values tuples
output:the targetted output
profile:profile FILE * output or NULL
userCtxt:user provided transform context
Returns:the result document or NULL in case of error

Function: xsltApplyTemplates

void	xsltApplyTemplates		(xsltTransformContextPtr ctxt, 
xmlNodePtr node,
xmlNodePtr inst,
xsltStylePreCompPtr castedComp)

Processes the XSLT 'apply-templates' instruction on the current node.

ctxt:a XSLT transformation context
node:the 'current node' in the source tree
inst:the element node of an XSLT 'apply-templates' instruction
castedComp:the compiled instruction

Function: xsltAttribute

void	xsltAttribute			(xsltTransformContextPtr ctxt, 
xmlNodePtr contextNode,
xmlNodePtr inst,
xsltStylePreCompPtr castedComp)

Process the xslt attribute node on the source node

ctxt:a XSLT process context
contextNode:the current node in the source tree
inst:the xsl:attribute element
castedComp:precomputed information

Function: xsltCallTemplate

void	xsltCallTemplate		(xsltTransformContextPtr ctxt, 
xmlNodePtr node,
xmlNodePtr inst,
xsltStylePreCompPtr castedComp)

Processes the XSLT call-template instruction on the source node.

ctxt:a XSLT transformation context
node:the "current node" in the source tree
inst:the XSLT 'call-template' instruction
castedComp:the compiled information of the instruction

Function: xsltChoose

void	xsltChoose			(xsltTransformContextPtr ctxt, 
xmlNodePtr contextNode,
xmlNodePtr inst,
xsltStylePreCompPtr comp)

Processes the xsl:choose instruction on the source node.

ctxt:a XSLT process context
contextNode:the current node in the source tree
inst:the xsl:choose instruction
comp:compiled information of the instruction

Function: xsltComment

void	xsltComment			(xsltTransformContextPtr ctxt, 
xmlNodePtr node,
xmlNodePtr inst,
xsltStylePreCompPtr comp)

Process the xslt comment node on the source node

ctxt:a XSLT process context
node:the node in the source tree.
inst:the xslt comment node
comp:precomputed information

Function: xsltCopy

void	xsltCopy			(xsltTransformContextPtr ctxt, 
xmlNodePtr node,
xmlNodePtr inst,
xsltStylePreCompPtr castedComp)

Execute the XSLT-copy instruction on the source node.

ctxt:an XSLT process context
node:the node in the source tree
inst:the element node of the XSLT-copy instruction
castedComp:computed information of the XSLT-copy instruction

Function: xsltCopyOf

void	xsltCopyOf			(xsltTransformContextPtr ctxt, 
xmlNodePtr node,
xmlNodePtr inst,
xsltStylePreCompPtr castedComp)

Process the XSLT copy-of instruction.

ctxt:an XSLT transformation context
node:the current node in the source tree
inst:the element node of the XSLT copy-of instruction
castedComp:precomputed information of the XSLT copy-of instruction

Function: xsltCopyTextString

xmlNodePtr	xsltCopyTextString	(xsltTransformContextPtr ctxt, 
xmlNodePtr target,
const xmlChar * string,
int noescape)

Adds @string to a newly created or an existent text node child of @target.

ctxt:a XSLT process context
target:the element where the text will be attached
string:the text string
noescape:should disable-escaping be activated for this text node.
Returns:the text node, where the text content of @cur is copied to. NULL in case of API or internal errors.

Function: xsltDocumentElem

void	xsltDocumentElem		(xsltTransformContextPtr ctxt, 
xmlNodePtr node,
xmlNodePtr inst,
xsltStylePreCompPtr castedComp)

Process an EXSLT/XSLT-1.1 document element

ctxt:an XSLT processing context
node:The current node
inst:the instruction in the stylesheet
castedComp:precomputed information

Function: xsltElement

void	xsltElement			(xsltTransformContextPtr ctxt, 
xmlNodePtr node,
xmlNodePtr inst,
xsltStylePreCompPtr castedComp)

Process the xslt element node on the source node

ctxt:a XSLT process context
node:the node in the source tree.
inst:the xslt element node
castedComp:precomputed information

Function: xsltForEach

void	xsltForEach			(xsltTransformContextPtr ctxt, 
xmlNodePtr contextNode,
xmlNodePtr inst,
xsltStylePreCompPtr castedComp)

Process the xslt for-each node on the source node

ctxt:an XSLT transformation context
contextNode:the "current node" in the source tree
inst:the element node of the xsl:for-each instruction
castedComp:the compiled information of the instruction

Function: xsltFreeTransformContext

void	xsltFreeTransformContext	(xsltTransformContextPtr ctxt)

Free up the memory allocated by @ctxt

ctxt:an XSLT parser context

Function: xsltGetXIncludeDefault

int	xsltGetXIncludeDefault		(void)

Provides the default state for XInclude processing

Returns:0 if there is no processing 1 otherwise

Function: xsltIf

void	xsltIf			(xsltTransformContextPtr ctxt, 
xmlNodePtr contextNode,
xmlNodePtr inst,
xsltStylePreCompPtr castedComp)

Processes the xsl:if instruction on the source node.

ctxt:a XSLT process context
contextNode:the current node in the source tree
inst:the xsl:if instruction
castedComp:compiled information of the instruction

Function: xsltLocalVariablePop

void	xsltLocalVariablePop		(xsltTransformContextPtr ctxt, 
int limitNr,
int level)

Pops all variable values at the given @depth from the stack.

ctxt:the transformation context
limitNr:number of variables which should remain
level:the depth in the xsl:template's tree

Function: xsltLocalVariablePush

int	xsltLocalVariablePush		(xsltTransformContextPtr ctxt, 
xsltStackElemPtr variable,
int level)

Places the variable onto the local variable stack

ctxt:the transformation context
variable:variable to be pushed to the variable stack
level:new value for variable's level
Returns:0 for success, -1 for any error **NOTE:** This is an internal routine and should not be called by users!

Function: xsltNewTransformContext

xsltTransformContextPtr	xsltNewTransformContext	(xsltStylesheetPtr style, 
xmlDocPtr doc)

Create a new XSLT TransformContext

style:a parsed XSLT stylesheet
doc:the input document
Returns:the newly allocated xsltTransformContextPtr or NULL in case of error

Function: xsltNumber

void	xsltNumber			(xsltTransformContextPtr ctxt, 
xmlNodePtr node,
xmlNodePtr inst,
xsltStylePreCompPtr castedComp)

Process the xslt number node on the source node

ctxt:a XSLT process context
node:the node in the source tree.
inst:the xslt number node
castedComp:precomputed information

Function: xsltProcessOneNode

void	xsltProcessOneNode		(xsltTransformContextPtr ctxt, 
xmlNodePtr contextNode,
xsltStackElemPtr withParams)

Process the source node.

ctxt:a XSLT process context
contextNode:the "current node" in the source tree
withParams:extra parameters (e.g. xsl:with-param) passed to the template if any

Function: xsltProcessingInstruction

void	xsltProcessingInstruction	(xsltTransformContextPtr ctxt, 
xmlNodePtr node,
xmlNodePtr inst,
xsltStylePreCompPtr castedComp)

Process the xslt processing-instruction node on the source node

ctxt:a XSLT process context
node:the node in the source tree.
inst:the xslt processing-instruction node
castedComp:precomputed information

Function: xsltProfileStylesheet

xmlDocPtr	xsltProfileStylesheet	(xsltStylesheetPtr style, 
xmlDocPtr doc,
const char ** params,
FILE * output)

Apply the stylesheet to the document and dump the profiling to the given output.

style:a parsed XSLT stylesheet
doc:a parsed XML document
params:a NULL terminated arry of parameters names/values tuples
output:a FILE * for the profiling output
Returns:the result document or NULL in case of error

Function: xsltRegisterAllElement

void	xsltRegisterAllElement		(xsltTransformContextPtr ctxt)

Registers all default XSLT elements in this context

ctxt:the XPath context

Function: xsltRunStylesheet

int	xsltRunStylesheet		(xsltStylesheetPtr style, 
xmlDocPtr doc,
const char ** params,
const char * output,
xmlSAXHandlerPtr SAX,
xmlOutputBufferPtr IObuf)

Apply the stylesheet to the document and generate the output according to @output @SAX and @IObuf. It's an error to specify both @SAX and @IObuf. NOTE: This may lead to a non-wellformed output XML wise ! NOTE: This may also result in multiple files being generated NOTE: using IObuf, the result encoding used will be the one used for creating the output buffer, use the following macro to read it from the stylesheet XSLT_GET_IMPORT_PTR(encoding, style, encoding) NOTE: using SAX, any encoding specified in the stylesheet will be lost since the interface uses only UTF8

style:a parsed XSLT stylesheet
doc:a parsed XML document
params:a NULL terminated array of parameters names/values tuples
output:the URL/filename ot the generated resource if available
SAX:a SAX handler for progressive callback output (not implemented yet)
IObuf:an output buffer for progressive output (not implemented yet)
Returns:the number of bytes written to the main resource or -1 in case of error.

Function: xsltRunStylesheetUser

int	xsltRunStylesheetUser		(xsltStylesheetPtr style, 
xmlDocPtr doc,
const char ** params,
const char * output,
xmlSAXHandlerPtr SAX,
xmlOutputBufferPtr IObuf,
FILE * profile,
xsltTransformContextPtr userCtxt)

Apply the stylesheet to the document and generate the output according to @output @SAX and @IObuf. It's an error to specify both @SAX and @IObuf. NOTE: This may lead to a non-wellformed output XML wise ! NOTE: This may also result in multiple files being generated NOTE: using IObuf, the result encoding used will be the one used for creating the output buffer, use the following macro to read it from the stylesheet XSLT_GET_IMPORT_PTR(encoding, style, encoding) NOTE: using SAX, any encoding specified in the stylesheet will be lost since the interface uses only UTF8

style:a parsed XSLT stylesheet
doc:a parsed XML document
params:a NULL terminated array of parameters names/values tuples
output:the URL/filename ot the generated resource if available
SAX:a SAX handler for progressive callback output (not implemented yet)
IObuf:an output buffer for progressive output (not implemented yet)
profile:profile FILE * output or NULL
userCtxt:user provided transform context
Returns:the number of by written to the main resource or -1 in case of error.

Function: xsltSetXIncludeDefault

void	xsltSetXIncludeDefault		(int xinclude)

Set whether XInclude should be processed on document being loaded by default

xinclude:whether to do XInclude processing

Function: xsltSort

void	xsltSort			(xsltTransformContextPtr ctxt, 
xmlNodePtr node,
xmlNodePtr inst,
xsltStylePreCompPtr comp)

function attached to xsl:sort nodes, but this should not be called directly

ctxt:a XSLT process context
node:the node in the source tree.
inst:the xslt sort node
comp:precomputed information

Function: xsltText

void	xsltText			(xsltTransformContextPtr ctxt, 
xmlNodePtr node,
xmlNodePtr inst,
xsltStylePreCompPtr comp)

Process the xslt text node on the source node

ctxt:a XSLT process context
node:the node in the source tree.
inst:the xslt text node
comp:precomputed information

Function: xsltValueOf

void	xsltValueOf			(xsltTransformContextPtr ctxt, 
xmlNodePtr node,
xmlNodePtr inst,
xsltStylePreCompPtr castedComp)

Process the xslt value-of node on the source node

ctxt:a XSLT process context
node:the node in the source tree.
inst:the xslt value-of node
castedComp:precomputed information

Daniel Veillard

PK|0]6kw3c.pngnu[PNG  IHDRH0=gAMA aIDATxZ}lSU?1{t3b(n "a4iXj8 1Jg8Q3tQ(h CK ^RBM&nCnohGX_ǹsWG=h&?h& ,',"a``d2LGc,˚L&$oذ8`GmmX~~~(GG!l643po!pN"m*u`[<4O:} !93Ceq\NN VeYfiZ؍`x5Σn| [w6?o oq\uuuKK 0EEEv]ѠS< .8s qW<ڵN(i3Su>8[2~쑱޾=VB8ܖD"r:l]]˗ ˲,644TVV*X履—HNMrTMޣg+RfmW_9loof͊D"FQT-̪R(. qcB1p~^@cÊ,x83=uY$0\.NwPiSdƴS#0%u|qGɶ"yOy8$v)].@mX0œh4^%LOfĔAZyq1w]BȻ ĨL~CQja R%r 4hhhd]ek3J;db0d^WnaQVOtI\tq:8.|QO`eEhRFZB#㇌4XU髤'_WZq&4v7-\3&c|AFF,x3M/7B|=8M/TiˆR `+я\Ql/bw1erl^I g.EРWV~Zw"gitdĝU{b=FlhFi\EGF C%zzij.G4}&NLL#xꧦLk.i dINRfxHn&܍7`/LRKӻYjb5.v<;AaLH:sI~HF WW8\QbK.%L6p$s!lN! iP'yy%ܢxh4VWW˘p8|>R!qIN&vL~&7NMRTpNzSEYYYjZtq\MM  zK}I""7zBcG(5jX,1*qdq3K:!Xh List of Symbols per Module for libxslt
Action against software patentsGNOME2 LogoW3C logoRed Hat Logo
Made with Libxslt Logo

The XSLT C library for GNOME

List of Symbols per Module for libxslt

Main Menu
Related links
API Indexes

Module attributes:

xsltApplyAttributeSet
xsltFreeAttributeSetsHashes
xsltParseStylesheetAttributeSet
xsltResolveStylesheetAttributeSet

Module documents:

XSLT_LOAD_DOCUMENT
XSLT_LOAD_START
XSLT_LOAD_STYLESHEET
xsltDocDefaultLoader
xsltDocLoaderFunc
xsltFindDocument
xsltFreeDocuments
xsltFreeStyleDocuments
xsltLoadDocument
xsltLoadStyleDocument
xsltLoadType
xsltNewDocument
xsltNewStyleDocument
xsltSetLoaderFunc

Module extensions:

xsltCheckExtPrefix
xsltCheckExtURI
xsltDebugDumpExtensions
xsltExtElementLookup
xsltExtInitFunction
xsltExtModuleElementLookup
xsltExtModuleElementPreComputeLookup
xsltExtModuleFunctionLookup
xsltExtModuleTopLevelLookup
xsltExtShutdownFunction
xsltFreeCtxtExts
xsltFreeExts
xsltGetExtData
xsltGetExtInfo
xsltInitCtxtExts
xsltInitElemPreComp
xsltInitGlobals
xsltNewElemPreComp
xsltPreComputeExtModuleElement
xsltPreComputeFunction
xsltRegisterExtElement
xsltRegisterExtFunction
xsltRegisterExtModule
xsltRegisterExtModuleElement
xsltRegisterExtModuleFull
xsltRegisterExtModuleFunction
xsltRegisterExtModuleTopLevel
xsltRegisterExtPrefix
xsltRegisterTestModule
xsltShutdownCtxtExts
xsltShutdownExts
xsltStyleExtInitFunction
xsltStyleExtShutdownFunction
xsltStyleGetExtData
xsltStyleStylesheetLevelGetExtData
xsltTopLevelFunction
xsltUnregisterExtModule
xsltUnregisterExtModuleElement
xsltUnregisterExtModuleFunction
xsltUnregisterExtModuleTopLevel
xsltXPathGetTransformContext

Module extra:

XSLT_LIBXSLT_NAMESPACE
XSLT_SAXON_NAMESPACE
XSLT_XALAN_NAMESPACE
XSLT_XT_NAMESPACE
xsltDebug
xsltFunctionNodeSet
xsltRegisterAllExtras
xsltRegisterExtras

Module functions:

XSLT_REGISTER_FUNCTION_LOOKUP
xsltDocumentFunction
xsltElementAvailableFunction
xsltFormatNumberFunction
xsltFunctionAvailableFunction
xsltGenerateIdFunction
xsltKeyFunction
xsltRegisterAllFunctions
xsltSystemPropertyFunction
xsltUnparsedEntityURIFunction
xsltXPathFunctionLookup

Module imports:

XSLT_GET_IMPORT_INT
XSLT_GET_IMPORT_PTR
xsltFindElemSpaceHandling
xsltFindTemplate
xsltNeedElemSpaceHandling
xsltNextImport
xsltParseStylesheetImport
xsltParseStylesheetInclude

Module keys:

NODE_IS_KEYED
xsltAddKey
xsltFreeDocumentKeys
xsltFreeKeys
xsltGetKey
xsltInitCtxtKeys

Module namespaces:

UNDEFINED_DEFAULT_NS
xsltCopyNamespace
xsltCopyNamespaceList
xsltFreeNamespaceAliasHashes
xsltGetNamespace
xsltGetPlainNamespace
xsltGetSpecialNamespace
xsltNamespaceAlias

Module numbersInternals:

_xsltCompMatch
_xsltFormatNumberInfo
_xsltNumberData
xsltFormatNumberInfo
xsltFormatNumberInfoPtr
xsltNumberData
xsltNumberDataPtr

Module pattern:

xsltAddTemplate
xsltCleanupTemplates
xsltCompMatch
xsltCompMatchPtr
xsltCompilePattern
xsltFreeCompMatchList
xsltFreeTemplateHashes
xsltGetTemplate
xsltMatchPattern
xsltNormalizeCompSteps
xsltTestCompMatchList

Module preproc:

xsltDocumentComp
xsltExtMarker
xsltFreeStylePreComps
xsltStylePreCompute

Module security:

XSLT_SECPREF_CREATE_DIRECTORY
XSLT_SECPREF_READ_FILE
XSLT_SECPREF_READ_NETWORK
XSLT_SECPREF_WRITE_FILE
XSLT_SECPREF_WRITE_NETWORK
xsltCheckRead
xsltCheckWrite
xsltFreeSecurityPrefs
xsltGetDefaultSecurityPrefs
xsltGetSecurityPrefs
xsltNewSecurityPrefs
xsltSecurityAllow
xsltSecurityCheck
xsltSecurityForbid
xsltSecurityOption
xsltSecurityPrefs
xsltSecurityPrefsPtr
xsltSetCtxtSecurityPrefs
xsltSetDefaultSecurityPrefs
xsltSetSecurityPrefs

Module templates:

xsltAttrListTemplateProcess
xsltAttrTemplateProcess
xsltAttrTemplateValueProcess
xsltAttrTemplateValueProcessNode
xsltEvalAttrValueTemplate
xsltEvalStaticAttrValueTemplate
xsltEvalTemplateString
xsltEvalXPathPredicate
xsltEvalXPathString
xsltEvalXPathStringNs
xsltTemplateProcess

Module transform:

xslHandleDebugger
xsltApplyImports
xsltApplyOneTemplate
xsltApplyStripSpaces
xsltApplyStylesheet
xsltApplyStylesheetUser
xsltApplyTemplates
xsltAttribute
xsltCallTemplate
xsltChoose
xsltComment
xsltCopy
xsltCopyOf
xsltCopyTextString
xsltDocumentElem
xsltElement
xsltForEach
xsltFreeTransformContext
xsltGetXIncludeDefault
xsltIf
xsltLocalVariablePop
xsltLocalVariablePush
xsltNewTransformContext
xsltNumber
xsltProcessOneNode
xsltProcessingInstruction
xsltProfileStylesheet
xsltRegisterAllElement
xsltRunStylesheet
xsltRunStylesheetUser
xsltSetXIncludeDefault
xsltSort
xsltText
xsltValueOf

Module variables:

XSLT_REGISTER_VARIABLE_LOOKUP
XSLT_RVT_FUNC_RESULT
XSLT_RVT_GLOBAL
XSLT_RVT_LOCAL
XSLT_RVT_VARIABLE
xsltAddStackElemList
xsltEvalGlobalVariables
xsltEvalOneUserParam
xsltEvalUserParams
xsltFreeGlobalVariables
xsltParseGlobalParam
xsltParseGlobalVariable
xsltParseStylesheetCallerParam
xsltParseStylesheetParam
xsltParseStylesheetVariable
xsltQuoteOneUserParam
xsltQuoteUserParams
xsltVariableLookup
xsltXPathVariableLookup

Module xslt:

XSLT_DEFAULT_URL
XSLT_DEFAULT_VENDOR
XSLT_DEFAULT_VERSION
XSLT_NAMESPACE
XSLT_PARSE_OPTIONS
xsltCleanupGlobals
xsltEngineVersion
xsltInit
xsltLibxmlVersion
xsltLibxsltVersion
xsltMaxDepth
xsltMaxVars

Module xsltInternals:

CHECK_STOPPED
CHECK_STOPPED0
CHECK_STOPPEDE
IS_XSLT_ATTR_FAST
IS_XSLT_ELEM_FAST
XML_CAST_FPTR
XSLT_CCTXT
XSLT_ERROR_SEVERITY_ERROR
XSLT_ERROR_SEVERITY_WARNING
XSLT_FAST_IF
XSLT_FUNC_APPLYIMPORTS
XSLT_FUNC_APPLYTEMPLATES
XSLT_FUNC_ATTRIBUTE
XSLT_FUNC_ATTRSET
XSLT_FUNC_CALLTEMPLATE
XSLT_FUNC_CHOOSE
XSLT_FUNC_COMMENT
XSLT_FUNC_COPY
XSLT_FUNC_COPYOF
XSLT_FUNC_DOCUMENT
XSLT_FUNC_ELEMENT
XSLT_FUNC_EXTENSION
XSLT_FUNC_FALLBACK
XSLT_FUNC_FOREACH
XSLT_FUNC_IF
XSLT_FUNC_INCLUDE
XSLT_FUNC_LITERAL_RESULT_ELEMENT
XSLT_FUNC_MESSAGE
XSLT_FUNC_NUMBER
XSLT_FUNC_OTHERWISE
XSLT_FUNC_PARAM
XSLT_FUNC_PI
XSLT_FUNC_SORT
XSLT_FUNC_TEXT
XSLT_FUNC_UNKOWN_FORWARDS_COMPAT
XSLT_FUNC_VALUEOF
XSLT_FUNC_VARIABLE
XSLT_FUNC_WHEN
XSLT_FUNC_WITHPARAM
XSLT_GET_INTERNAL_NSMAP
XSLT_HAS_INTERNAL_NSMAP
XSLT_IS_RES_TREE_FRAG
XSLT_IS_TEXT_NODE
XSLT_ITEM_COMMON_FIELDS
XSLT_ITEM_COMPATIBILITY_FIELDS
XSLT_ITEM_NAVIGATION_FIELDS
XSLT_ITEM_NSINSCOPE_FIELDS
XSLT_MARK_RES_TREE_FRAG
XSLT_MAX_SORT
XSLT_OUTPUT_HTML
XSLT_OUTPUT_TEXT
XSLT_OUTPUT_XML
XSLT_PAT_NO_PRIORITY
XSLT_REFACTORED_KEYCOMP
XSLT_REFACTORED_VARS
XSLT_REFACTORED_XPATHCOMP
XSLT_RUNTIME_EXTRA
XSLT_RUNTIME_EXTRA_FREE
XSLT_RUNTIME_EXTRA_LST
XSLT_STATE_ERROR
XSLT_STATE_OK
XSLT_STATE_STOPPED
_xsltCompilerCtxt
_xsltCompilerNodeInfo
_xsltDecimalFormat
_xsltDocument
_xsltEffectiveNs
_xsltElemPreComp
_xsltKeyDef
_xsltKeyTable
_xsltNsAlias
_xsltNsList
_xsltNsListContainer
_xsltNsMap
_xsltPointerList
_xsltPrincipalStylesheetData
_xsltRuntimeExtra
_xsltStackElem
_xsltStyleBasicEmptyItem
_xsltStyleBasicExpressionItem
_xsltStyleBasicItemVariable
_xsltStyleItemApplyTemplates
_xsltStyleItemAttribute
_xsltStyleItemCallTemplate
_xsltStyleItemCopy
_xsltStyleItemDocument
_xsltStyleItemElement
_xsltStyleItemExtElement
_xsltStyleItemIf
_xsltStyleItemInclude
_xsltStyleItemLRElementInfo
_xsltStyleItemMessage
_xsltStyleItemNumber
_xsltStyleItemOtherwise
_xsltStyleItemPI
_xsltStyleItemParam
_xsltStyleItemSort
_xsltStyleItemText
_xsltStyleItemUknown
_xsltStyleItemValueOf
_xsltStyleItemWhen
_xsltStylePreComp
_xsltStylesheet
_xsltTemplate
_xsltTransformCache
_xsltTransformContext
_xsltVarInfo
xsltAllocateExtra
xsltAllocateExtraCtxt
xsltCompileAttr
xsltCompilerCtxt
xsltCompilerCtxtPtr
xsltCompilerNodeInfo
xsltCompilerNodeInfoPtr
xsltConstNamespaceNameXSLT
xsltCreateRVT
xsltDecimalFormat
xsltDecimalFormatGetByName
xsltDecimalFormatGetByQName
xsltDecimalFormatPtr
xsltDocument
xsltDocumentPtr
xsltEffectiveNs
xsltEffectiveNsPtr
xsltElemPreComp
xsltElemPreCompDeallocator
xsltElemPreCompPtr
xsltErrorSeverityType
xsltEvalAVT
xsltExtensionInstructionResultFinalize
xsltExtensionInstructionResultRegister
xsltFlagRVTs
xsltFormatNumberConversion
xsltFreeAVTList
xsltFreeRVTs
xsltFreeStackElemList
xsltFreeStylesheet
xsltInitAllDocKeys
xsltInitCtxtKey
xsltIsBlank
xsltKeyDef
xsltKeyDefPtr
xsltKeyTable
xsltKeyTablePtr
xsltLoadStylesheetPI
xsltNewStylesheet
xsltNsAlias
xsltNsAliasPtr
xsltNsList
xsltNsListContainer
xsltNsListContainerPtr
xsltNsListPtr
xsltNsMap
xsltNsMapPtr
xsltNumberFormat
xsltOutputType
xsltParseAnyXSLTElem
xsltParseSequenceConstructor
xsltParseStylesheetDoc
xsltParseStylesheetFile
xsltParseStylesheetImportedDoc
xsltParseStylesheetOutput
xsltParseStylesheetProcess
xsltParseTemplateContent
xsltPointerList
xsltPointerListAddSize
xsltPointerListClear
xsltPointerListCreate
xsltPointerListFree
xsltPointerListPtr
xsltPrincipalStylesheetData
xsltPrincipalStylesheetDataPtr
xsltRegisterLocalRVT
xsltRegisterPersistRVT
xsltRegisterTmpRVT
xsltReleaseRVT
xsltRestoreDocumentNamespaces
xsltRuntimeExtra
xsltRuntimeExtraPtr
xsltSortFunc
xsltStackElem
xsltStackElemPtr
xsltStyleBasicEmptyItem
xsltStyleBasicEmptyItemPtr
xsltStyleBasicExpressionItem
xsltStyleBasicExpressionItemPtr
xsltStyleBasicItemVariable
xsltStyleBasicItemVariablePtr
xsltStyleItemApplyImports
xsltStyleItemApplyImportsPtr
xsltStyleItemApplyTemplates
xsltStyleItemApplyTemplatesPtr
xsltStyleItemAttribute
xsltStyleItemAttributePtr
xsltStyleItemCallTemplate
xsltStyleItemCallTemplatePtr
xsltStyleItemChoose
xsltStyleItemChoosePtr
xsltStyleItemComment
xsltStyleItemCommentPtr
xsltStyleItemCopy
xsltStyleItemCopyOf
xsltStyleItemCopyOfPtr
xsltStyleItemCopyPtr
xsltStyleItemDocument
xsltStyleItemDocumentPtr
xsltStyleItemElement
xsltStyleItemElementPtr
xsltStyleItemExtElement
xsltStyleItemExtElementPtr
xsltStyleItemFallback
xsltStyleItemFallbackPtr
xsltStyleItemForEach
xsltStyleItemForEachPtr
xsltStyleItemIf
xsltStyleItemIfPtr
xsltStyleItemInclude
xsltStyleItemIncludePtr
xsltStyleItemLRElementInfo
xsltStyleItemLRElementInfoPtr
xsltStyleItemMessage
xsltStyleItemMessagePtr
xsltStyleItemNumber
xsltStyleItemNumberPtr
xsltStyleItemOtherwise
xsltStyleItemOtherwisePtr
xsltStyleItemPI
xsltStyleItemPIPtr
xsltStyleItemParam
xsltStyleItemParamPtr
xsltStyleItemSort
xsltStyleItemSortPtr
xsltStyleItemText
xsltStyleItemTextPtr
xsltStyleItemUknown
xsltStyleItemUknownPtr
xsltStyleItemValueOf
xsltStyleItemValueOfPtr
xsltStyleItemVariable
xsltStyleItemVariablePtr
xsltStyleItemWhen
xsltStyleItemWhenPtr
xsltStyleItemWithParam
xsltStyleItemWithParamPtr
xsltStylePreComp
xsltStylePreCompPtr
xsltStyleType
xsltStylesheet
xsltStylesheetPtr
xsltTemplate
xsltTemplatePtr
xsltTransformCache
xsltTransformCachePtr
xsltTransformContext
xsltTransformContextPtr
xsltTransformFunction
xsltTransformState
xsltUninit
xsltVarInfo
xsltVarInfoPtr
xsltXSLTAttrMarker

Module xsltexports:

LIBXSLT_PUBLIC
XSLTCALL
XSLTPUBFUN
XSLTPUBVAR
_REENTRANT

Module xsltlocale:

XSLT_LOCALE_NONE
XSLT_LOCALE_POSIX
XSLT_LOCALE_WINAPI
xsltFreeLocale
xsltFreeLocales
xsltLocale
xsltLocaleChar
xsltLocaleStrcmp
xsltNewLocale
xsltStrxfrm

Module xsltutils:

IS_XSLT_ELEM
IS_XSLT_NAME
IS_XSLT_REAL_NODE
XSLT_DEBUG_CONT
XSLT_DEBUG_INIT
XSLT_DEBUG_NEXT
XSLT_DEBUG_NONE
XSLT_DEBUG_QUIT
XSLT_DEBUG_RUN
XSLT_DEBUG_RUN_RESTART
XSLT_DEBUG_STEP
XSLT_DEBUG_STEPOUT
XSLT_DEBUG_STOP
XSLT_STRANGE
XSLT_TIMESTAMP_TICS_PER_SEC
XSLT_TODO
XSLT_TRACE
XSLT_TRACE_ALL
XSLT_TRACE_APPLY_TEMPLATE
XSLT_TRACE_APPLY_TEMPLATES
XSLT_TRACE_CALL_TEMPLATE
XSLT_TRACE_CHOOSE
XSLT_TRACE_COMMENT
XSLT_TRACE_COPY
XSLT_TRACE_COPY_OF
XSLT_TRACE_COPY_TEXT
XSLT_TRACE_FOR_EACH
XSLT_TRACE_IF
XSLT_TRACE_KEYS
XSLT_TRACE_NONE
XSLT_TRACE_PI
XSLT_TRACE_PROCESS_NODE
XSLT_TRACE_STRIP_SPACES
XSLT_TRACE_TEMPLATES
XSLT_TRACE_VALUE_OF
XSLT_TRACE_VARIABLES
xslAddCall
xslDebugStatus
xslDropCall
xsltAddCallCallback
xsltCalibrateAdjust
xsltComputeSortResult
xsltDebugGetDefaultTrace
xsltDebugSetDefaultTrace
xsltDebugStatusCodes
xsltDebugTraceCodes
xsltDefaultSortFunction
xsltDoSortFunction
xsltDocumentSortFunction
xsltDropCallCallback
xsltGenericDebug
xsltGenericDebugContext
xsltGenericError
xsltGenericErrorContext
xsltGetCNsProp
xsltGetDebuggerStatus
xsltGetNsProp
xsltGetProfileInformation
xsltGetQNameURI
xsltGetQNameURI2
xsltGetUTF8Char
xsltHandleDebuggerCallback
xsltMessage
xsltPrintErrorContext
xsltSaveProfiling
xsltSaveResultTo
xsltSaveResultToFd
xsltSaveResultToFile
xsltSaveResultToFilename
xsltSaveResultToString
xsltSetCtxtParseOptions
xsltSetCtxtSortFunc
xsltSetDebuggerCallbacks
xsltSetDebuggerStatus
xsltSetGenericDebugFunc
xsltSetGenericErrorFunc
xsltSetSortFunc
xsltSetTransformErrorFunc
xsltSplitQName
xsltTimestamp
xsltTransformError
xsltXPathCompile
xsltXPathCompileFlags

Daniel Veillard

PK|0]Rv"n"ntutorial2/libxslt_pipes.xmlnu[
PanosLouridas 2004 Panagiotis Louridas Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. libxslt: An Extended Tutorial Introduction The Extensible Stylesheet Language Transformations (XSLT) specification defines an XML template language for transforming XML documents. An XSLT engine reads an XSLT file and an XML document and transforms the document accordingly. We want to perform a series of XSLT transformations to a series of documents. An obvious solution is to use the operating system's pipe mechanism and start a series of transformation processes, each one taking as input the output of the previous transformation. It would be interesting, though, and perhaps more efficient if we could do our job within a single process. libxslt is a library for doing XSLT transformations. It is built on libxml, which is a library for handling XML documents. libxml and libxslt are used by the GNOME project. Although developed in the *NIX world, both libxml and libxslt have been ported to the MS-Windows platform. In principle an application using libxslt should be easily portable between the two systems. In practice, however, there arise various wrinkles. These do not have anything to do with libxml or libxslt per se, but rather with the different compilation and linking procedures of each system. The presented solution is an extension of John Fleck's libxslt tutorial, but the present tutorial tries to be self-contained. It develops a minimal libxslt application (libxslt_pipes) that can perform a series of transformations to a series of files in a pipe-like manner. An invocation might be: libxslt_pipes --out results.xml foo.xsl bar.xsl doc1.xml doc2.xml The foo.xsl stylesheet will be applied to doc1.xml and the bar.xsl stylesheet will be applied to the resulting document; then the two stylesheets will be applied in the same sequence to bar.xsl. The results are sent to results.xml (if no output is specified they are sent to standard output). The application is compiled in both *NIX systems and MS-Windows, where by *NIX systems we mean Linux, BSD, and other members of the family. The gcc suite is used in the *NIX platform and the Microsoft compiler and linker are used in the MS-Windows platform. Setting the Scene We need to include the necessary libraries: #include #include #include #include ]]> The first group of include directives includes general C libraries. The libraries we need to make libxslt work are in the second group. The transform.h header file declares the API that does the bulk of the actual processing. The xsltutils.h header file declares the API for some generic utility functions of the XSLT engine; among other things, saving to a file, which is what we need it for. If our input files contain entities through external subsets, we need to tell libxslt to load them. The global variable xmlLoadExtDtdDefaultValue, defined in libxml/globals.h, is responsible for that. As the variable is defined outside our program we must specify external linkage: extern int xmlLoadExtDtdDefaultValue; The program is called from the command line. We anticipate that the user may not call it the right way, so we define a function for describing its usage: static void usage(const char *name) { printf("Usage: %s [options] stylesheet [stylesheet ...] file [file ...]\n", name); printf(" --out file: send output to file\n"); printf(" --param name value: pass a (parameter,value) pair\n"); } Program Start We need to define a few variables that are used throughout the program: int main(int argc, char **argv) { int arg_indx; const char *params[16 + 1]; int params_indx = 0; int stylesheet_indx = 0; int file_indx = 0; int i, j, k; FILE *output_file = stdout; xsltStylesheetPtr *stylesheets = (xsltStylesheetPtr *) calloc(argc, sizeof(xsltStylesheetPtr)); xmlDocPtr *files = (xmlDocPtr *) calloc(argc, sizeof(xmlDocPtr)); int return_value = 0; The arg_indx integer is an index used to iterate over the program arguments. The params string array is used to collect the XSLT parameters. In XSLT, additional information may be passed to the processor via parameters. The user of the program specifies these in key-value pairs in the command line following the --param command line argument. We accept up to 8 such key-value pairs, which we track with the params_indx integer. libxslt expects the parameters array to be null-terminated, so we have to allocate one extra place (16 + 1) for it. The file_indx is an index to iterate over the files to be processed. The i, j, k integers are additional indices for iteration purposes, and return_value is the value the program returns to the operating system. We expect the result of the transformation to be the standard output in most cases, but the user may wish otherwise via the command line option, so we need to keep track of the situation with the output_file file pointer. In libxslt, XSLT stylesheets are internally stored in xsltStylesheet structures; similarly, in libxml XML documents are stored in xmlDoc structures. xsltStylesheetPtr and xmlDocPtr are simply typedefs of pointers to them. The user may specify any number of stylesheets that will be applied to the documents one after the other. To save time we parse the stylesheets and the documents as we read them from the command line and keep the parsed representation of them. The parsed results are kept in arrays. These are dynamically allocated and sized to the number of arguments; this wastes some space, but not much (the size of xmlStyleSheetPtr and xmlDocPtr is the size of a pointer) and simplifies code later on. The array memory is allocated with calloc to ensure contents are initialised to zero. Arguments Collection If the program gets no arguments at all, we print the usage description, set the program return value to 1 and exit. Instead of returning directly we go to (literally) to the end of the program text where some housekeeping takes place. = 16) { fprintf(stderr, "too many params\n"); return_value = 1; goto finish; } } else if ((!strcmp(argv[arg_indx], "-o")) || (!strcmp(argv[arg_indx], "--out"))) { arg_indx++; output_file = fopen(argv[arg_indx], "w"); } else { fprintf(stderr, "Unknown option %s\n", argv[arg_indx]); usage(argv[0]); return_value = 1; goto finish; } } params[params_indx] = 0; ]]> If the user passes arguments we have to collect them. This is a matter of iterating over the program argument list while we encounter arguments starting with a dash. The XSLT parameters are put into the params array and the output_file is set to the user request, if any. After processing all the parameter key-value pairs we set the last element of the params array to null. Parsing The rest of the argument list is taken to be stylesheets and files to be transformed. Stylesheets are identified by their suffix, which is expected to be xsl (case sensitive). All other files are assumed to be XML documents, regardless of suffix. Stylesheets are parsed using the xsltParseStylesheetFile function. xsltParseStylesheetFile takes as argument a pointer to an xmlChar, a typedef of an unsigned char; in effect, the filename of the stylesheet. The resulting xsltStylesheetPtr is placed in the stylesheets array. In the same vein, XML files are parsed using the xmlParseFile function that takes as argument the file's name; the resulting xmlDocPtr is placed in the files array. File Processing All stylesheets are applied to each file one after the other. Stylesheets are applied with the xsltApplyStylesheet function that takes as argument the stylesheet to be applied, the file to be transformed and any parameters we have collected. The in-memory representation of an XML document takes space, which we free using the xmlFreeDoc function. The file is then saved to the specified output. To output an XML document we have in memory we use the xlstSaveResultToFile function, where we specify the destination, the document and the stylesheet that has been applied to it. The stylesheet is required so that output-related information contained in the stylesheet, such as the encoding to be used, is used in output. If no transformation has taken place, which will happen when the user specifies no stylesheets at all in the command line, we use the xmlDocDump libxml function that saves the source document to the file without further ado. As parsed stylesheets take up space in memory, we take care to free that memory after use with a call to xmlFreeStyleSheet. When all work is done, we clean up all global variables used by the XSLT library using xsltCleanupGlobals. Likewise, all global memory allocated for the XML parser is reclaimed by a call to xmlCleanupParser. Before returning we deallocate the memory allocated for the holding the pointers to the XML documents and stylesheets. *NIX Compiling and Linking Compiling and linking in a *NIX environment is easy, as the required libraries are almost certain to be already in place (remember that libxml and libxslt are used by the GNOME project, so they are present in most installations). The program can be dynamically linked so that its footprint is minimized, or statically linked, so that it stands by itself, carrying all required code. For dynamic linking the following one liner will do: gcc -o libxslt_pipes -Wall -I/usr/include/libxml2 -lxslt -lxml2 -L/usr/lib libxslt_pipes.c We assume that the necessary header files are in /usr/include/libxml2 and that the required libraries (libxslt.so, libxml2.so) are in /usr/lib. In general, a program may need to link to additional libraries, depending on the processing it actually performs. A good way to start is to use the xslt-config script. The option displays usage information. Running xslt-config --cflags we get compile flags, while running xslt-config --libs we get the library settings for the linker. For static linking we must list more libraries than we did for dynamic linking, as the libraries on which the libxsl and libxslt libraries depend are also needed. Using xslt-config on a particular installation we create the following one-liner: gcc -o libxslt_pipes -Wall -I/usr/include/libxml2 libxslt_pipes.c -static -L/usr/lib -lxslt -lxml2 -lz -lpthread -lm If we get warnings to the effect that some function in statically linked applications requires at runtime the shared libraries used from the glibc version used for linking, that means that the binary is not completely static. Although we statically linked against the GNU C runtime library glibc, glibc uses external libraries to perform some of its functions. Same version libraries must be present on the system we want the application to run. One way to avoid this it to use an alternative C runtime, for example uClibc, which requires obtaining and building a uClibc toolchain first (if the reason for trying to get a statically linked version of the program is to embed it somewhere, using uClibc might be a good idea anyway). MS-Windows Compiling and Linking Compiling and linking in MS-Windows requires some attention. First, the MS-Windows ports must be downloaded and installed in the programming workstation. The ports are available in Igor Zlatkovi's site. We need the ports for iconv, zlib, libxml, and libxslt. In contrast to *NIX environments, we cannot assume that the libraries needed will be present in other computers where the program will be used. One solution is to distribute the program along with the necessary dynamic libraries. Another solution is to statically link the program so that only a single executable file will have to be distributed. We assume that we have decompressed the downloaded ports and have placed the required contents of their include directories in an include directory in our file system. The required contents include everything apart from the libexslt directory of the libxslt port, as we are not using EXLST (an initiative to provide extensions to XSLT) in this project. In order to compile the program we have to make sure that all necessary header files are included. When using the Microsoft compiler this translates to adding the required switches in the command line. If using a Visual Studio product the same effect is attained by specifying additional include directories in the compilation options. In the end, if the headers have been copied in C:\include the command line must contain . This being a C program, it needs to be compiled against an implementation of the C libraries. Microsoft provides various implementations. The ports, however, have been compiled against the msvcrt.dll implementation, so it is wise to use the same runtime in our project, lest we wish to come against unexpected runtime crashes. The msvcrt.dll is a multi-threaded implementation and is specified by giving as a compiler option. Unfortunately, the correspondence between the switch and msvcrt.dll breaks after version 6 of the Microsoft compiler. In version 7 and later (i.e., Visual Studio .NET), links against a different DLL; in version 7.1 this is msvcrt71.dll. The end result of this bit of esoterica is that if you try to dynamically link your application with a compiler whose version is greater than 6, your program is likely to crash unexpectedly. Alternatively, you may wish to compile all iconv, zlib, libxml and libxslt yourself, using the new runtime library. This is not a tall order, and some details are given below. There are three kinds of libraries in MS-Windows. Dynamically Linked Libraries (DLLs), like msvcrt.dll we met above, are used for dynamic linking; an application links to them at runtime, so the application does not include the code contained in them. Static libraries are used for static linking; an application adds the libraries' code to its own code at link time. Import libraries are used when building an application that uses DLLs. For the application to be built, the linker must somehow find the definitions of the functions that will be provided in runtime by the DLLs, otherwise it will complain about unresolved references. Import libraries contain function stubs that, for each DLL function we want to call, know where to look for it in the DLL. In essence, in order to use a DLL we must link against its corresponding import library. DLLs have a .dll suffix; static and import libraries both have a .lib suffix. In the MS-Windows ports of libxml and libxslt static libraries are distinguished by their name ending in _a.lib, while in the zlib port the import library is zdll.lib and the static library is zlib.lib. In what follows we assume we have a lib directory in our filesystem where we place the libraries we need for linking. If we want to link dynamically we must make sure the lib directory contains iconv.lib, libxslt.lib, libxml2.lib, and zdll.lib. When using the Microsoft linker this translates to adding the required switch and the necessary libraries in the command line. In Visual Studio we must specify an additional library directory for lib and put the necessary libraries in the additional dependencies. In the end, the command line must include , provided the libraries' directory is C:\lib. In order for the resulting executable to run, the ports DLLs must be present; one way is to place all DLLs contained in the ports in the home directory of our application, and make sure they are distributed together. If we want to link statically we must make sure the lib directory contains iconv_a.lib, libxslt_a.lib, libxml2_a.lib, and zlib.lib. Adding lib as a library directory and putting the necessary libraries in the additional dependencies, we get a command line that should include . The resulting executable is much bigger than if we linked dynamically; it is, however, self-contained and can be distributed more easily, in theory at least. In practice, however, the executable is not completely static. We saw that the ports are compiled against msvcrt.dll, so the program does require that DLL at runtime. Moreover, since when using a version of Microsoft developer tools with a version number greater than 6, we are no longer using msvcrt.dll, but another runtime like msvcrt71.dll, and we then need that DLL. In contrast to msvcrt.dll it may not be present on the target computer, so we may have to copy it along. Building the Ports in MS-Windows The source code of the ports is readily available on the web, one has to check the ports sites. Each port can be built without problems in an MS-Windows environment using Microsoft development tools. The necessary command line tools (compiler, linker, nmake) must be available. This means running a batch file called vcvars32.bat that comes with Visual Studio (its exact location in the directory tree may vary depending on the version of Visual Studio, but a file search will find it anyway). Makefiles for the Microsoft tools are found in all ports. They are distinguished by their suffix, e.g., Makefile.msvc or Makefile.msc. To build zlib it suffices to run nmake against Makefile.msc (i.e., with the option); similarly, to build iconv it suffices to run nmake against Makefile.msvc. Building libxml and libxslt requires an extra configuration step; we must run the configure.js configuration script with the cscript command. configure.js is found in the win32 directory in the distributions. It is written in JScript, Microsoft's implementation of the ECMA 262 language specification (ECMAScript Edition 3), a JavaScript offspring. The configuration string takes a number of parameters detailing our environment and needs; cscript configure.js help documents them. It is wise to read all documentation files in the source distributions before starting; moreover, pay attention to the dependencies between the ports. If we configure libxml and libxslt to use iconv and zlib we must build these two first and make sure their headers and libraries can be found by the compiler and the linker when building libxml and libxslt. zlib, iconv and All That We saw that libxml and libxslt depend on various other libraries, for instance zlib, iconv, and so forth. Taking a look into them gives us clues on the capabilities of libxml and libxslt. zlib is a free general purpose lossless data compression library. It is a venerable workhorse; more than 500 applications (both commercial and open source) seem to use the library. libxml uses zlib so that it can read from or write to compressed files directly. The xmlParseFile function can transparently parse a compressed document to produce an xmlDoc. If we want to create a compressed document with libxml we can use an xmlTextWriterPtr (obtained through xmlNewTextWriterDoc), or another related structure from libxml/xmlwriter.h, with compression enabled. XML allows documents to use a variety of different character encodings. iconv is a free library for converting between different character encodings. libxml provides a set of default converters for some encodings: UTF-8, UTF-16 (little endian and big endian), ISO-8859-1, ASCII, and HTML (a specific handler for the conversion of UTF-8 to ASCII with HTML predefined entities like &copy; for the copyright sign). However, when compiled with iconv support, libxml and libxslt can handle the full range of encodings provided by iconv; these should cover most needs. libxml and libxslt can be used in multi-threaded applications. In MS-Windows they are linked against MSVCRT.DLL (or one of its descendants, as we saw above). In *NIX the pthreads (POSIX threads) library is used. The Complete Program The complete program listing is given below. The program is also available online.
PK|0]Zݼ\\tutorial2/libxslt_pipes.cnu[/* * libxslt_pipes.c: a program for performing a series of XSLT * transformations * * Writen by Panos Louridas, based on libxslt_tutorial.c by John Fleck. * * See Copyright for the status of this software. * */ #include #include #include #include #include extern int xmlLoadExtDtdDefaultValue; static void usage(const char *name) { printf("Usage: %s [options] stylesheet [stylesheet ...] file [file ...]\n", name); printf(" --out file: send output to file\n"); printf(" --param name value: pass a (parameter,value) pair\n"); } int main(int argc, char **argv) { int arg_indx; const char *params[16 + 1]; int params_indx = 0; int stylesheet_indx = 0; int file_indx = 0; int i, j, k; FILE *output_file = stdout; xsltStylesheetPtr *stylesheets = (xsltStylesheetPtr *) calloc(argc, sizeof(xsltStylesheetPtr)); xmlDocPtr *files = (xmlDocPtr *) calloc(argc, sizeof(xmlDocPtr)); xmlDocPtr doc, res; int return_value = 0; if (argc <= 1) { usage(argv[0]); return_value = 1; goto finish; } /* Collect arguments */ for (arg_indx = 1; arg_indx < argc; arg_indx++) { if (argv[arg_indx][0] != '-') break; if ((!strcmp(argv[arg_indx], "-param")) || (!strcmp(argv[arg_indx], "--param"))) { arg_indx++; params[params_indx++] = argv[arg_indx++]; params[params_indx++] = argv[arg_indx]; if (params_indx >= 16) { fprintf(stderr, "too many params\n"); return_value = 1; goto finish; } } else if ((!strcmp(argv[arg_indx], "-o")) || (!strcmp(argv[arg_indx], "--out"))) { arg_indx++; output_file = fopen(argv[arg_indx], "w"); } else { fprintf(stderr, "Unknown option %s\n", argv[arg_indx]); usage(argv[0]); return_value = 1; goto finish; } } params[params_indx] = 0; /* Collect and parse stylesheets and files to be transformed */ for (; arg_indx < argc; arg_indx++) { char *argument = (char *) malloc(sizeof(char) * (strlen(argv[arg_indx]) + 1)); strcpy(argument, argv[arg_indx]); if (strtok(argument, ".")) { char *suffix = strtok(0, "."); if (suffix && !strcmp(suffix, "xsl")) { stylesheets[stylesheet_indx++] = xsltParseStylesheetFile((const xmlChar *)argv[arg_indx]);; } else { files[file_indx++] = xmlParseFile(argv[arg_indx]); } } else { files[file_indx++] = xmlParseFile(argv[arg_indx]); } free(argument); } xmlSubstituteEntitiesDefault(1); xmlLoadExtDtdDefaultValue = 1; /* Process files */ for (i = 0; files[i]; i++) { doc = files[i]; res = doc; for (j = 0; stylesheets[j]; j++) { res = xsltApplyStylesheet(stylesheets[j], doc, params); xmlFreeDoc(doc); doc = res; } if (stylesheets[0]) { xsltSaveResultToFile(output_file, res, stylesheets[j-1]); } else { xmlDocDump(output_file, res); } xmlFreeDoc(res); } fclose(output_file); for (k = 0; stylesheets[k]; k++) { xsltFreeStylesheet(stylesheets[k]); } xsltCleanupGlobals(); xmlCleanupParser(); finish: free(stylesheets); free(files); return(return_value); } PK|0]k@,tutorial2/libxslt_pipes.htmlnu[libxslt: An Extended Tutorial

libxslt: An Extended Tutorial

Panos Louridas

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.


Introduction

The Extensible Stylesheet Language Transformations (XSLT) specification defines an XML template language for transforming XML documents. An XSLT engine reads an XSLT file and an XML document and transforms the document accordingly.

We want to perform a series of XSLT transformations to a series of documents. An obvious solution is to use the operating system's pipe mechanism and start a series of transformation processes, each one taking as input the output of the previous transformation. It would be interesting, though, and perhaps more efficient if we could do our job within a single process.

libxslt is a library for doing XSLT transformations. It is built on libxml, which is a library for handling XML documents. libxml and libxslt are used by the GNOME project. Although developed in the *NIX world, both libxml and libxslt have been ported to the MS-Windows platform. In principle an application using libxslt should be easily portable between the two systems. In practice, however, there arise various wrinkles. These do not have anything to do with libxml or libxslt per se, but rather with the different compilation and linking procedures of each system.

The presented solution is an extension of John Fleck's libxslt tutorial, but the present tutorial tries to be self-contained. It develops a minimal libxslt application (libxslt_pipes) that can perform a series of transformations to a series of files in a pipe-like manner. An invocation might be:

libxslt_pipes --out results.xml foo.xsl bar.xsl doc1.xml doc2.xml

The foo.xsl stylesheet will be applied to doc1.xml and the bar.xsl stylesheet will be applied to the resulting document; then the two stylesheets will be applied in the same sequence to bar.xsl. The results are sent to results.xml (if no output is specified they are sent to standard output).

The application is compiled in both *NIX systems and MS-Windows, where by *NIX systems we mean Linux, BSD, and other members of the family. The gcc suite is used in the *NIX platform and the Microsoft compiler and linker are used in the MS-Windows platform.

Setting the Scene

We need to include the necessary libraries:

  
  #include <stdio.h>
  #include <string.h>
  #include <stdlib.h>
  
  #include <libxslt/transform.h>
  #include <libxslt/xsltutils.h>
  

The first group of include directives includes general C libraries. The libraries we need to make libxslt work are in the second group. The transform.h header file declares the API that does the bulk of the actual processing. The xsltutils.h header file declares the API for some generic utility functions of the XSLT engine; among other things, saving to a file, which is what we need it for.

If our input files contain entities through external subsets, we need to tell libxslt to load them. The global variable xmlLoadExtDtdDefaultValue, defined in libxml/globals.h, is responsible for that. As the variable is defined outside our program we must specify external linkage:

    extern int xmlLoadExtDtdDefaultValue;
  

The program is called from the command line. We anticipate that the user may not call it the right way, so we define a function for describing its usage:

  static void usage(const char *name) {
      printf("Usage: %s [options] stylesheet [stylesheet ...] file [file ...]\n",
          name);
      printf("      --out file: send output to file\n");
      printf("      --param name value: pass a (parameter,value) pair\n");
  }

Program Start

We need to define a few variables that are used throughout the program:

    int main(int argc, char **argv) {
        int arg_indx;
	const char *params[16 + 1];
	int params_indx = 0;
	int stylesheet_indx = 0;
	int file_indx = 0;
	int i, j, k;
	FILE *output_file = stdout;
	xsltStylesheetPtr *stylesheets = 
	    (xsltStylesheetPtr *) calloc(argc, sizeof(xsltStylesheetPtr));
	    xmlDocPtr *files = (xmlDocPtr *) calloc(argc, sizeof(xmlDocPtr));
	int return_value = 0;

The arg_indx integer is an index used to iterate over the program arguments. The params string array is used to collect the XSLT parameters. In XSLT, additional information may be passed to the processor via parameters. The user of the program specifies these in key-value pairs in the command line following the --param command line argument. We accept up to 8 such key-value pairs, which we track with the params_indx integer. libxslt expects the parameters array to be null-terminated, so we have to allocate one extra place (16 + 1) for it. The file_indx is an index to iterate over the files to be processed. The i, j, k integers are additional indices for iteration purposes, and return_value is the value the program returns to the operating system. We expect the result of the transformation to be the standard output in most cases, but the user may wish otherwise via the --out command line option, so we need to keep track of the situation with the output_file file pointer.

In libxslt, XSLT stylesheets are internally stored in xsltStylesheet structures; similarly, in libxml XML documents are stored in xmlDoc structures. xsltStylesheetPtr and xmlDocPtr are simply typedefs of pointers to them. The user may specify any number of stylesheets that will be applied to the documents one after the other. To save time we parse the stylesheets and the documents as we read them from the command line and keep the parsed representation of them. The parsed results are kept in arrays. These are dynamically allocated and sized to the number of arguments; this wastes some space, but not much (the size of xmlStyleSheetPtr and xmlDocPtr is the size of a pointer) and simplifies code later on. The array memory is allocated with calloc to ensure contents are initialised to zero.

Arguments Collection

If the program gets no arguments at all, we print the usage description, set the program return value to 1 and exit. Instead of returning directly we go to (literally) to the end of the program text where some housekeeping takes place.

  
    if (argc <= 1) {
        usage(argv[0]);
        return_value = 1;
        goto finish;
    }
        
    /* Collect arguments */
    for (arg_indx = 1; arg_indx < argc; arg_indx++) {
        if (argv[arg_indx][0] != '-')
            break;
        if ((!strcmp(argv[arg_indx], "-param"))
                || (!strcmp(argv[arg_indx], "--param"))) {
            arg_indx++;
            params[params_indx++] = argv[arg_indx++];
            params[params_indx++] = argv[arg_indx];
            if (params_indx >= 16) {
                fprintf(stderr, "too many params\n");
                return_value = 1;
                goto finish;
            }
        }  else if ((!strcmp(argv[arg_indx], "-o"))
                || (!strcmp(argv[arg_indx], "--out"))) {
            arg_indx++;
            output_file = fopen(argv[arg_indx], "w");
        } else {
            fprintf(stderr, "Unknown option %s\n", argv[arg_indx]);
            usage(argv[0]);
            return_value = 1;
            goto finish;
        }
    }
    params[params_indx] = 0;
    

If the user passes arguments we have to collect them. This is a matter of iterating over the program argument list while we encounter arguments starting with a dash. The XSLT parameters are put into the params array and the output_file is set to the user request, if any. After processing all the parameter key-value pairs we set the last element of the params array to null.

Parsing

The rest of the argument list is taken to be stylesheets and files to be transformed. Stylesheets are identified by their suffix, which is expected to be xsl (case sensitive). All other files are assumed to be XML documents, regardless of suffix.

  
    /* Collect and parse stylesheets and files to be transformed */
    for (; arg_indx < argc; arg_indx++) {
        char *argument =
            (char *) malloc(sizeof(char) * (strlen(argv[arg_indx]) + 1));
        strcpy(argument, argv[arg_indx]);
        if (strtok(argument, ".")) {
            char *suffix = strtok(0, ".");
            if (suffix && !strcmp(suffix, "xsl")) {
                stylesheets[stylesheet_indx++] =
                    xsltParseStylesheetFile((const xmlChar *)argv[arg_indx]);;
            } else {
                files[file_indx++] = xmlParseFile(argv[arg_indx]);
            }
        } else {
            files[file_indx++] = xmlParseFile(argv[arg_indx]);
        }
        free(argument);
    }
  

Stylesheets are parsed using the xsltParseStylesheetFile function. xsltParseStylesheetFile takes as argument a pointer to an xmlChar, a typedef of an unsigned char; in effect, the filename of the stylesheet. The resulting xsltStylesheetPtr is placed in the stylesheets array. In the same vein, XML files are parsed using the xmlParseFile function that takes as argument the file's name; the resulting xmlDocPtr is placed in the files array.

File Processing

All stylesheets are applied to each file one after the other. Stylesheets are applied with the xsltApplyStylesheet function that takes as argument the stylesheet to be applied, the file to be transformed and any parameters we have collected. The in-memory representation of an XML document takes space, which we free using the xmlFreeDoc function. The file is then saved to the specified output.

  
    /* Process files */
    for (i = 0; files[i]; i++) {
        doc = files[i];
        res = doc;
        for (j = 0; stylesheets[j]; j++) {
            res = xsltApplyStylesheet(stylesheets[j], doc, params);
            xmlFreeDoc(doc);
            doc = res;
        }

        if (stylesheets[0]) {
            xsltSaveResultToFile(output_file, res, stylesheets[j-1]);
        } else {
            xmlDocDump(output_file, res);
        }
        xmlFreeDoc(res);
    }

    fclose(output_file);

    for (k = 0; stylesheets[k]; k++) {
        xsltFreeStylesheet(stylesheets[k]);
    }

    xsltCleanupGlobals();
    xmlCleanupParser();

 finish:
    free(stylesheets);
    free(files);
    return(return_value);
    

To output an XML document we have in memory we use the xlstSaveResultToFile function, where we specify the destination, the document and the stylesheet that has been applied to it. The stylesheet is required so that output-related information contained in the stylesheet, such as the encoding to be used, is used in output. If no transformation has taken place, which will happen when the user specifies no stylesheets at all in the command line, we use the xmlDocDump libxml function that saves the source document to the file without further ado.

As parsed stylesheets take up space in memory, we take care to free that memory after use with a call to xmlFreeStyleSheet. When all work is done, we clean up all global variables used by the XSLT library using xsltCleanupGlobals. Likewise, all global memory allocated for the XML parser is reclaimed by a call to xmlCleanupParser. Before returning we deallocate the memory allocated for the holding the pointers to the XML documents and stylesheets.

*NIX Compiling and Linking

Compiling and linking in a *NIX environment is easy, as the required libraries are almost certain to be already in place (remember that libxml and libxslt are used by the GNOME project, so they are present in most installations). The program can be dynamically linked so that its footprint is minimized, or statically linked, so that it stands by itself, carrying all required code.

For dynamic linking the following one liner will do:

gcc -o libxslt_pipes -Wall -I/usr/include/libxml2 -lxslt -lxml2 -L/usr/lib libxslt_pipes.c

We assume that the necessary header files are in /usr/include/libxml2 and that the required libraries (libxslt.so, libxml2.so) are in /usr/lib.

In general, a program may need to link to additional libraries, depending on the processing it actually performs. A good way to start is to use the xslt-config script. The --help option displays usage information. Running

xslt-config --cflags

we get compile flags, while running

xslt-config --libs

we get the library settings for the linker.

For static linking we must list more libraries than we did for dynamic linking, as the libraries on which the libxsl and libxslt libraries depend are also needed. Using xslt-config on a particular installation we create the following one-liner:

gcc -o libxslt_pipes -Wall -I/usr/include/libxml2 libxslt_pipes.c -static -L/usr/lib -lxslt -lxml2 -lz -lpthread -lm

If we get warnings to the effect that some function in statically linked applications requires at runtime the shared libraries used from the glibc version used for linking, that means that the binary is not completely static. Although we statically linked against the GNU C runtime library glibc, glibc uses external libraries to perform some of its functions. Same version libraries must be present on the system we want the application to run. One way to avoid this it to use an alternative C runtime, for example uClibc, which requires obtaining and building a uClibc toolchain first (if the reason for trying to get a statically linked version of the program is to embed it somewhere, using uClibc might be a good idea anyway).

MS-Windows Compiling and Linking

Compiling and linking in MS-Windows requires some attention. First, the MS-Windows ports must be downloaded and installed in the programming workstation. The ports are available in Igor Zlatković's site. We need the ports for iconv, zlib, libxml, and libxslt. In contrast to *NIX environments, we cannot assume that the libraries needed will be present in other computers where the program will be used. One solution is to distribute the program along with the necessary dynamic libraries. Another solution is to statically link the program so that only a single executable file will have to be distributed.

We assume that we have decompressed the downloaded ports and have placed the required contents of their include directories in an include directory in our file system. The required contents include everything apart from the libexslt directory of the libxslt port, as we are not using EXLST (an initiative to provide extensions to XSLT) in this project. In order to compile the program we have to make sure that all necessary header files are included. When using the Microsoft compiler this translates to adding the required /I switches in the command line. If using a Visual Studio product the same effect is attained by specifying additional include directories in the compilation options. In the end, if the headers have been copied in C:\include the command line must contain /I"C:\include" /I"C:\include\libslt" /I"C:\include\libxml".

This being a C program, it needs to be compiled against an implementation of the C libraries. Microsoft provides various implementations. The ports, however, have been compiled against the msvcrt.dll implementation, so it is wise to use the same runtime in our project, lest we wish to come against unexpected runtime crashes. The msvcrt.dll is a multi-threaded implementation and is specified by giving /MD as a compiler option. Unfortunately, the correspondence between the /MD switch and msvcrt.dll breaks after version 6 of the Microsoft compiler. In version 7 and later (i.e., Visual Studio .NET), /MD links against a different DLL; in version 7.1 this is msvcrt71.dll. The end result of this bit of esoterica is that if you try to dynamically link your application with a compiler whose version is greater than 6, your program is likely to crash unexpectedly. Alternatively, you may wish to compile all iconv, zlib, libxml and libxslt yourself, using the new runtime library. This is not a tall order, and some details are given below.

There are three kinds of libraries in MS-Windows. Dynamically Linked Libraries (DLLs), like msvcrt.dll we met above, are used for dynamic linking; an application links to them at runtime, so the application does not include the code contained in them. Static libraries are used for static linking; an application adds the libraries' code to its own code at link time. Import libraries are used when building an application that uses DLLs. For the application to be built, the linker must somehow find the definitions of the functions that will be provided in runtime by the DLLs, otherwise it will complain about unresolved references. Import libraries contain function stubs that, for each DLL function we want to call, know where to look for it in the DLL. In essence, in order to use a DLL we must link against its corresponding import library. DLLs have a .dll suffix; static and import libraries both have a .lib suffix. In the MS-Windows ports of libxml and libxslt static libraries are distinguished by their name ending in _a.lib, while in the zlib port the import library is zdll.lib and the static library is zlib.lib. In what follows we assume we have a lib directory in our filesystem where we place the libraries we need for linking.

If we want to link dynamically we must make sure the lib directory contains iconv.lib, libxslt.lib, libxml2.lib, and zdll.lib. When using the Microsoft linker this translates to adding the required /LIBPATH switch and the necessary libraries in the command line. In Visual Studio we must specify an additional library directory for lib and put the necessary libraries in the additional dependencies. In the end, the command line must include /LIBPATH:"C:\lib" "lib\iconv.lib" "lib\libxslt.lib" "lib\libxml2.lib" "lib\zdll.lib", provided the libraries' directory is C:\lib. In order for the resulting executable to run, the ports DLLs must be present; one way is to place all DLLs contained in the ports in the home directory of our application, and make sure they are distributed together.

If we want to link statically we must make sure the lib directory contains iconv_a.lib, libxslt_a.lib, libxml2_a.lib, and zlib.lib. Adding lib as a library directory and putting the necessary libraries in the additional dependencies, we get a command line that should include /LIBPATH:"C:\lib" "lib\iconv_a.lib" "lib\libxslt_a.lib" "lib\libxml2_a.lib" "lib\zlib.lib". The resulting executable is much bigger than if we linked dynamically; it is, however, self-contained and can be distributed more easily, in theory at least. In practice, however, the executable is not completely static. We saw that the ports are compiled against msvcrt.dll, so the program does require that DLL at runtime. Moreover, since when using a version of Microsoft developer tools with a version number greater than 6, we are no longer using msvcrt.dll, but another runtime like msvcrt71.dll, and we then need that DLL. In contrast to msvcrt.dll it may not be present on the target computer, so we may have to copy it along.

Building the Ports in MS-Windows

The source code of the ports is readily available on the web, one has to check the ports sites. Each port can be built without problems in an MS-Windows environment using Microsoft development tools. The necessary command line tools (compiler, linker, nmake) must be available. This means running a batch file called vcvars32.bat that comes with Visual Studio (its exact location in the directory tree may vary depending on the version of Visual Studio, but a file search will find it anyway). Makefiles for the Microsoft tools are found in all ports. They are distinguished by their suffix, e.g., Makefile.msvc or Makefile.msc. To build zlib it suffices to run nmake against Makefile.msc (i.e., with the /F option); similarly, to build iconv it suffices to run nmake against Makefile.msvc. Building libxml and libxslt requires an extra configuration step; we must run the configure.js configuration script with the cscript command. configure.js is found in the win32 directory in the distributions. It is written in JScript, Microsoft's implementation of the ECMA 262 language specification (ECMAScript Edition 3), a JavaScript offspring. The configuration string takes a number of parameters detailing our environment and needs; cscript configure.js help documents them.

It is wise to read all documentation files in the source distributions before starting; moreover, pay attention to the dependencies between the ports. If we configure libxml and libxslt to use iconv and zlib we must build these two first and make sure their headers and libraries can be found by the compiler and the linker when building libxml and libxslt.

zlib, iconv and All That

We saw that libxml and libxslt depend on various other libraries, for instance zlib, iconv, and so forth. Taking a look into them gives us clues on the capabilities of libxml and libxslt.

zlib is a free general purpose lossless data compression library. It is a venerable workhorse; more than 500 applications (both commercial and open source) seem to use the library. libxml uses zlib so that it can read from or write to compressed files directly. The xmlParseFile function can transparently parse a compressed document to produce an xmlDoc. If we want to create a compressed document with libxml we can use an xmlTextWriterPtr (obtained through xmlNewTextWriterDoc), or another related structure from libxml/xmlwriter.h, with compression enabled.

XML allows documents to use a variety of different character encodings. iconv is a free library for converting between different character encodings. libxml provides a set of default converters for some encodings: UTF-8, UTF-16 (little endian and big endian), ISO-8859-1, ASCII, and HTML (a specific handler for the conversion of UTF-8 to ASCII with HTML predefined entities like &copy; for the copyright sign). However, when compiled with iconv support, libxml and libxslt can handle the full range of encodings provided by iconv; these should cover most needs.

libxml and libxslt can be used in multi-threaded applications. In MS-Windows they are linked against MSVCRT.DLL (or one of its descendants, as we saw above). In *NIX the pthreads (POSIX threads) library is used.

The Complete Program

The complete program listing is given below. The program is also available online.

/*
 * libxslt_pipes.c: a program for performing a series of XSLT
 * transformations
 *
 * Writen by Panos Louridas, based on libxslt_tutorial.c by John Fleck.
 *
 * See the file Copyright for the status of this software.
 *
 */ 

#include <stdio.h>
#include <string.h>
#include <stdlib.h>

#include <libxslt/transform.h>
#include <libxslt/xsltutils.h>

extern int xmlLoadExtDtdDefaultValue;

static void usage(const char *name) {
    printf("Usage: %s [options] stylesheet [stylesheet ...] file [file ...]\n",
            name);
    printf("      --out file: send output to file\n");
    printf("      --param name value: pass a (parameter,value) pair\n");
}

int main(int argc, char **argv) {
    int arg_indx;
    const char *params[16 + 1];
    int params_indx = 0;
    int stylesheet_indx = 0;
    int file_indx = 0;
    int i, j, k;
    FILE *output_file = stdout;
    xsltStylesheetPtr *stylesheets = 
        (xsltStylesheetPtr *) calloc(argc, sizeof(xsltStylesheetPtr));
    xmlDocPtr *files = (xmlDocPtr *) calloc(argc, sizeof(xmlDocPtr));
    xmlDocPtr doc, res;
    int return_value = 0;
        
    if (argc <= 1) {
        usage(argv[0]);
        return_value = 1;
        goto finish;
    }
        
    /* Collect arguments */
    for (arg_indx = 1; arg_indx < argc; arg_indx++) {
        if (argv[arg_indx][0] != '-')
            break;
        if ((!strcmp(argv[arg_indx], "-param"))
                || (!strcmp(argv[arg_indx], "--param"))) {
            arg_indx++;
            params[params_indx++] = argv[arg_indx++];
            params[params_indx++] = argv[arg_indx];
            if (params_indx >= 16) {
                fprintf(stderr, "too many params\n");
                return_value = 1;
                goto finish;
            }
        }  else if ((!strcmp(argv[arg_indx], "-o"))
                || (!strcmp(argv[arg_indx], "--out"))) {
            arg_indx++;
            output_file = fopen(argv[arg_indx], "w");
        } else {
            fprintf(stderr, "Unknown option %s\n", argv[arg_indx]);
            usage(argv[0]);
            return_value = 1;
            goto finish;
        }
    }
    params[params_indx] = 0;

    /* Collect and parse stylesheets and files to be transformed */
    for (; arg_indx < argc; arg_indx++) {
        char *argument =
            (char *) malloc(sizeof(char) * (strlen(argv[arg_indx]) + 1));
        strcpy(argument, argv[arg_indx]);
        if (strtok(argument, ".")) {
            char *suffix = strtok(0, ".");
            if (suffix && !strcmp(suffix, "xsl")) {
                stylesheets[stylesheet_indx++] =
                    xsltParseStylesheetFile((const xmlChar *)argv[arg_indx]);;
            } else {
                files[file_indx++] = xmlParseFile(argv[arg_indx]);
            }
        } else {
            files[file_indx++] = xmlParseFile(argv[arg_indx]);
        }
        free(argument);
    }

    xmlSubstituteEntitiesDefault(1);
    xmlLoadExtDtdDefaultValue = 1;

    /* Process files */
    for (i = 0; files[i]; i++) {
        doc = files[i];
        res = doc;
        for (j = 0; stylesheets[j]; j++) {
            res = xsltApplyStylesheet(stylesheets[j], doc, params);
            xmlFreeDoc(doc);
            doc = res;
        }

        if (stylesheets[0]) {
            xsltSaveResultToFile(output_file, res, stylesheets[j-1]);
        } else {
            xmlDocDump(output_file, res);
        }
        xmlFreeDoc(res);
    }

    fclose(output_file);

    for (k = 0; stylesheets[k]; k++) {
        xsltFreeStylesheet(stylesheets[k]);
    }

    xsltCleanupGlobals();
    xmlCleanupParser();

 finish:
    free(stylesheets);
    free(files);
    return(return_value);
}

PK|0]fvxAPIchunk2.htmlnu[ API Alphabetic Index S-a for libxslt
Action against software patentsGNOME2 LogoW3C logoRed Hat Logo
Made with Libxslt Logo

The XSLT C library for GNOME

API Alphabetic Index S-a for libxslt

Main Menu
Related links
API Indexes

A-I J-R S-a b-c d-e f-g h-i j-m n-o p-p q-s t-u v-x y-z

Letter S:

SAX
xsltRunStylesheet
xsltRunStylesheetUser
Sampling
XSLT_TIMESTAMP_TICS_PER_SEC
Save
xsltSaveProfiling
xsltSaveResultTo
xsltSaveResultToFd
xsltSaveResultToFile
xsltSaveResultToFilename
xsltSaveResultToString
Saxon
XSLT_SAXON_NAMESPACE
Scaling
_xsltFormatNumberInfo
Search
xsltGetCNsProp
xsltGetNsProp
xsltVariableLookup
Set
_xsltCompilerNodeInfo
xsltDebugSetDefaultTrace
xsltSetCtxtSecurityPrefs
xsltSetDefaultSecurityPrefs
xsltSetLoaderFunc
xsltSetXIncludeDefault
Should
xsltInitCtxtKeys
Shutdown
xsltShutdownCtxtExts
xsltShutdownExts
Signature
xsltSortFunc
xsltTransformFunction
Similar
xsltGetCNsProp
xsltGetNsProp
xsltQuoteUserParams
Size
_xsltTemplate
_xsltTransformContext
Special
UNDEFINED_DEFAULT_NS
xsltFormatNumberConversion
Specific
XSLT_PAT_NO_PRIORITY
Speed
_xsltTransformContext
Split
xsltSplitQName
Storage
_xsltCompilerCtxt
Strip
xsltApplyStripSpaces
Structure:
xsltFormatNumberConversion
Stylesheet
_xsltStylesheet
xsltNewStylesheet
Symbol
xsltFormatNumberConversion

Letter T:

TEMP
_xsltCompilerCtxt
TODO:
XSLT_ITEM_COMPATIBILITY_FIELDS
XSLT_ITEM_NAVIGATION_FIELDS
_xsltCompilerCtxt
_xsltStyleBasicExpressionItem
_xsltStyleItemApplyTemplates
_xsltStyleItemCallTemplate
_xsltStyleItemDocument
_xsltStylesheet
_xsltTemplate
xsltFindTemplate
Template
_xsltStylesheet
_xsltTransformContext
Templates
xsltAttrListTemplateProcess
xsltAttrTemplateProcess
Test
xsltTestCompMatchList
That
XSLT_REFACTORED_KEYCOMP
TransformContext
xsltNewTransformContext
Transforms
xsltStrxfrm
Tree
_xsltStackElem
_xsltTransformContext
xsltCreateRVT
xsltExtensionInstructionResultFinalize
xsltFindDocument
xsltFreeRVTs
xsltRegisterLocalRVT
xsltRegisterPersistRVT
xsltRegisterTmpRVT
xsltReleaseRVT
Try
xsltFindDocument
xsltLoadDocument
xsltLoadStyleDocument

Letter U:

URL
XSLT_DEFAULT_URL
_xsltStyleItemDocument
_xsltStylePreComp
xsltParseStylesheetFile
xsltRunStylesheet
xsltRunStylesheetUser
xsltSaveResultToFilename
xsltSecurityCheck
UTF-8
xsltGetUTF8Char
xsltStrxfrm
UTF8
xsltGetUTF8Char
xsltRunStylesheet
xsltRunStylesheetUser
Uninitializes
xsltUninit
Unregister
xsltCleanupGlobals
xsltUnregisterExtModule
Unregisters
xsltUnregisterExtModuleElement
xsltUnregisterExtModuleFunction
xsltUnregisterExtModuleTopLevel
Update
xsltSetSecurityPrefs
Updates
xsltFlagRVTs
Use
xsltRegisterTmpRVT
Used
_xsltDecimalFormat
xsltCalibrateAdjust
xsltTimestamp
User
xsltSecurityCheck

Letter V:

Value
_xsltTransformContext
xsltAttrListTemplateProcess
xsltAttrTemplateProcess
xsltCreateRVT
Variable
xsltVariableLookup

Letter W:

WITH_XSLT_DEBUG_BREAKPOINTS
xslAddCall
Why
xsltAttrTemplateValueProcessNode
Will
CHECK_STOPPED
CHECK_STOPPED0
CHECK_STOPPEDE
WinAPI
XSLT_LOCALE_WINAPI

Letter X:

XALAN
XSLT_XALAN_NAMESPACE
XInclude
_xsltTransformContext
xsltGetXIncludeDefault
xsltSetXIncludeDefault
XML
_xsltNsMap
_xsltStylesheet
xsltApplyStripSpaces
xsltApplyStylesheet
xsltApplyStylesheetUser
xsltFindDocument
xsltFindElemSpaceHandling
xsltGetProfileInformation
xsltNewDocument
xsltNewStyleDocument
xsltParseStylesheetDoc
xsltParseStylesheetImportedDoc
xsltParseStylesheetProcess
xsltProfileStylesheet
xsltRunStylesheet
xsltRunStylesheetUser
xsltSaveResultToString
XML_CAST_FPTR
XML_CAST_FPTR
XSLT-1
xsltDocumentComp
xsltDocumentElem
XSLT-attributes
xsltAttrListTemplateProcess
XSLT-copy
xsltCopy
XSLT_ERROR_SEVERITY_WARNING
_xsltCompilerCtxt
XSLT_GET_IMPORT_PTR
xsltRunStylesheet
xsltRunStylesheetUser
XSLT_RVT_FUNC_RESULT
xsltFlagRVTs
XSLT_RVT_GLOBAL
xsltFlagRVTs
XSLT_RVT_LOCAL
XSLT_RVT_FUNC_RESULT
xsltFlagRVTs
XSLT_RVT_VARIABLE
XSLT_RVT_FUNC_RESULT

Letter a:

absent
xsltFormatNumberConversion
accelerators
_xsltNumberData
access
XSLT_RUNTIME_EXTRA_LST
according
xsltFlagRVTs
xsltRunStylesheet
xsltRunStylesheetUser
xsltStrxfrm
accordingly
xsltComputeSortResult
xsltDefaultSortFunction
xsltDoSortFunction
xsltDocumentSortFunction
activated
xsltCopyTextString
actual
xsltDoSortFunction
xsltRegisterExtElement
xsltRegisterExtFunction
actually
xsltXPathFunctionLookup
xsltXPathVariableLookup
add
xsltAddKey
added
xsltCopyNamespaceList
xsltGetNamespace
xsltGetSpecialNamespace
xsltPointerListAddSize
adding
xsltParseStylesheetProcess
additionally
xsltExtensionInstructionResultRegister
xsltParseSequenceConstructor
address
xsltSetDebuggerCallbacks
after
XSLT_RVT_FUNC_RESULT
XSLT_RVT_LOCAL
XSLT_RVT_VARIABLE
xsltExtensionInstructionResultFinalize
xsltFlagRVTs
xsltGetProfileInformation
xsltLocaleStrcmp
xsltParseStylesheetDoc
afterwards
xsltApplyOneTemplate
alias
_xsltStylesheet
aliases
_xsltStylesheet
xsltCopyNamespaceList
xsltFreeNamespaceAliasHashes
aliasing
XML_CAST_FPTR
all
XSLT_ITEM_COMMON_FIELDS
XSLT_REGISTER_FUNCTION_LOOKUP
XSLT_REGISTER_VARIABLE_LOOKUP
_xsltStylesheet
_xsltTransformContext
xsltAttrListTemplateProcess
xsltCleanupGlobals
xsltEvalGlobalVariables
xsltFreeCompMatchList
xsltFreeDocuments
xsltFreeRVTs
xsltFreeStyleDocuments
xsltFreeStylePreComps
xsltInitCtxtKeys
xsltLocalVariablePop
xsltRegisterAllElement
xsltRegisterAllFunctions
allocated
_xsltTransformContext
xsltFreeCompMatchList
xsltFreeStackElemList
xsltFreeStylePreComps
xsltFreeStylesheet
xsltFreeTransformContext
xsltGetCNsProp
xsltNewStylesheet
xsltNewTransformContext
xsltPointerListClear
xsltSaveResultToString
xsltSplitQName
allow
xsltApplyStylesheetUser
xsltSecurityAllow
xsltSetDebuggerCallbacks
allowed
xsltCheckRead
xsltCheckWrite
allowing
xsltAttrTemplateValueProcessNode
xsltEvalXPathStringNs
already
_xsltDocument
_xsltStylesheet
xsltApplyOneTemplate
xsltGetKey
xsltGetNamespace
xsltGetSpecialNamespace
xsltRegisterExtPrefix
also
xsltGetQNameURI
xsltParseStylesheetCallerParam
xsltRunStylesheet
xsltRunStylesheetUser
always
xsltApplyOneTemplate
xsltSecurityAllow
xsltSecurityForbid
amiss
xsltParseStylesheetProcess
analyzes
xsltGetQNameURI
anchor
xsltGetSpecialNamespace
anchored
xsltGetCNsProp
xsltGetNsProp
another
xsltSetGenericDebugFunc
xsltSetGenericErrorFunc
any
_xsltStylesheet
_xsltTransformContext
xsltExtensionInstructionResultRegister
xsltFormatNumberConversion
xsltGetPlainNamespace
xsltInitAllDocKeys
xsltInitElemPreComp
xsltLocalVariablePush
xsltProcessOneNode
xsltRunStylesheet
xsltRunStylesheetUser
anymore
xsltApplyOneTemplate
xsltDocumentSortFunction
xsltGetNamespace
xsltInitCtxtKeys
api
xsltFormatNumberConversion
appear
_xsltDecimalFormat
appears
_xsltFormatNumberInfo
application-wide
xsltGetDefaultSecurityPrefs
xsltSetDefaultSecurityPrefs
applied
xslAddCall
xsltApplyAttributeSet
xsltAttrListTemplateProcess
xsltParseStylesheetDoc
applies
xslHandleDebugger
apply
xsltEvalUserParams
xsltFindTemplate
xsltNewDocument
xsltNewStyleDocument
xsltQuoteUserParams
apply-imports
xsltApplyImports
apply-templates
_xsltStyleItemApplyTemplates
_xsltStyleItemSort
_xsltStylePreComp
xsltApplyTemplates
applying
_xsltCompilerCtxt
xsltGetTemplate
xsltSaveResultTo
xsltSaveResultToFd
xsltSaveResultToFile
xsltSaveResultToFilename
xsltSaveResultToString
are
_xsltDocument
_xsltStackElem
_xsltStylesheet
_xsltTransformContext
xslHandleDebugger
xsltApplyAttributeSet
xsltApplyOneTemplate
xsltAttrListTemplateProcess
xsltCopyNamespaceList
xsltEvalAttrValueTemplate
xsltExtensionInstructionResultFinalize
xsltGetProfileInformation
xsltGetQNameURI
xsltGetSpecialNamespace
xsltInitCtxtKeys
xsltLocaleStrcmp
xsltQuoteUserParams
argument
XSLT_IS_TEXT_NODE
xsltSetGenericDebugFunc
xsltSetGenericErrorFunc
arguments
xsltDocumentFunction
xsltElementAvailableFunction
xsltFormatNumberFunction
xsltFunctionAvailableFunction
xsltFunctionNodeSet
xsltGenerateIdFunction
xsltKeyFunction
xsltSystemPropertyFunction
xsltUnparsedEntityURIFunction
array
_xsltStylesheet
xsltApplyStylesheetUser
xsltComputeSortResult
xsltDefaultSortFunction
xsltDoSortFunction
xsltEvalUserParams
xsltPointerListClear
xsltRunStylesheet
xsltRunStylesheetUser
xsltVariableLookup
arry
xsltApplyStylesheet
xsltDefaultSortFunction
xsltDoSortFunction
xsltProfileStylesheet
xsltQuoteUserParams
assign
xsltAttrListTemplateProcess
assigned:
_xsltStyleItemDocument
associated
_xsltStylesheet
xsltAddTemplate
xsltExtShutdownFunction
xsltFreeAVTList
xsltFreeDocumentKeys
xsltFreeGlobalVariables
xsltGetCNsProp
xsltGetExtData
xsltGetNsProp
xsltGetQNameURI
xsltParseStylesheetDoc
xsltParseStylesheetImportedDoc
xsltParseStylesheetProcess
xsltRegisterExtElement
xsltRegisterExtFunction
xsltRegisterExtModule
xsltRegisterExtModuleFull
xsltRegisterExtPrefix
xsltStyleExtShutdownFunction
xsltStyleGetExtData
xsltStyleStylesheetLevelGetExtData
xsltTransformFunction
xsltUnregisterExtModule
xsltXPathGetTransformContext
attached
xsltCopyTextString
xsltSort
attempt
xsltLoadStylesheetPI
attr
xsltGetSpecialNamespace
attribute-set
xsltParseStylesheetAttributeSet
attribute-sets
xsltApplyAttributeSet
attributes
xsltAttrListTemplateProcess
xsltNamespaceAlias
attrubute
xsltCompileAttr
automatically
xsltCopyNamespaceList
xsltParseStylesheetDoc
available
xsltFunctionNodeSet
xsltGetProfileInformation
xsltRunStylesheet
xsltRunStylesheetUser
xsltTransformError
availble
xsltGetProfileInformation
average=
xsltGetProfileInformation
avoid
xsltExtensionInstructionResultRegister

A-I J-R S-a b-c d-e f-g h-i j-m n-o p-p q-s t-u v-x y-z

Daniel Veillard

PK|0] hgg docs.htmlnu[ Documentation
Action against software patentsGNOME2 LogoW3C logoRed Hat Logo
Made with Libxslt Logo

The XSLT C library for GNOME

Documentation

Main Menu
Related links
API Indexes

There are some on-line resources about using libxslt:

  1. Check the API documentation automatically extracted from code comments (using the program apibuild.py, developed for libxml, together with the xsl script 'newapi.xsl' and the libxslt xsltproc program).
  2. Look at the mailing-list archive.
  3. Of course since libxslt is based on libxml, it's a good idea to at least read libxml description

Daniel Veillard

PK|0]қqstylesheet.gifnu[PK|0]##processing.gifnu[PK|0]~Y[q[q?APIchunk11.htmlnu[PK|0]6V(V( contexts.gifnu[PK|0]vz7z7+APIconstructors.htmlnu[PK|0]J'' index.htmlnu[PK|0]jjJ,APIchunk1.htmlnu[PK|0]G3PoPolAPIchunk6.htmlnu[PK|0]B&&downloads.htmlnu[PK|0]ƿnn^$API.htmlnu[PK|0]9y?EXSLT/APIconstructors.htmlnu[PK|0]KKREXSLT/index.htmlnu[PK|0]nnMMqhEXSLT/downloads.htmlnu[PK|0]GN͊BBEXSLT/APIchunk0.htmlnu[PK|0]Ae77EXSLT/libexslt-refs.xmlnu[PK|0]2*EXSLT/libexslt-api.xmlnu[PK|0]ʡ8EXSLT/intro.htmlnu[PK|0]ܽt0EXSLT/APIfunctions.htmlnu[PK|0]$%rruGEXSLT/help.htmlnu[PK|0]wn''&_EXSLT/exslt.htmlnu[PK|0]AEXSLT/APIsymbols.htmlnu[PK|0] 04$$EXSLT/bugs.htmlnu[PK|0]PDZss EXSLT/html/index.htmlnu[PK|0]daa%EXSLT/html/libexslt-exsltexports.htmlnu[PK|0]PDZsszEXSLT/html/libexslt-lib.htmlnu[PK|0]CZ 9 EXSLT/html/up.pngnu[PK|0]PDZssEXSLT/html/book1.htmlnu[PK|0]D!EXSLT/html/left.pngnu[PK|0]lk#EXSLT/html/right.pngnu[PK|0]Y?uH8H8%EXSLT/html/libexslt-exslt.htmlnu[PK|0]|^EXSLT/html/home.pngnu[PK|0]9YaEXSLT/APIfiles.htmlnu[PK|0]ʿzEXSLT/docs.htmlnu[PK|0]֜@\w\wxAPIchunk9.htmlnu[PK|0]< Libxslt-Logo-90x34.gifnu[PK|0]pjojo3libxslt-refs.xmlnu[PK|0](٥mm݉ APIchunk0.htmlnu[PK|0]J0%%  xsltproc.htmlnu[PK|0]Ae77B libexslt-refs.xmlnu[PK|0]ÜeeU images/callouts/9.pngnu[PK|0]mii,W images/callouts/10.pngnu[PK|0]ҜxFeeX images/callouts/8.pngnu[PK|0]ny^^Z images/callouts/3.pngnu[PK|0]II(\ images/callouts/1.pngnu[PK|0]x3pnYY] images/callouts/4.pngnu[PK|0]\\T_ images/callouts/5.pngnu[PK|0]G(cc` images/callouts/6.pngnu[PK|0]}XXb images/callouts/7.pngnu[PK|0] aa:d images/callouts/2.pngnu[PK|0]2e libexslt-api.xmlnu[PK|0]  gnome2.pngnu[PK|0]f  contribs.htmlnu[PK|0]W*=pp internals.htmlnu[PK|0]\ APIchunk12.htmlnu[PK|0]<.mm س epatents.pngnu[PK|0]čFNN  intro.htmlnu[PK|0]~  xsltproc2.htmlnu[PK|0] Soo APIchunk7.htmlnu[PK|0]5XXa extensions.htmlnu[PK|0]#U&.. , xslt.htmlnu[PK|0]APIfunctions.htmlnu[PK|0]e Պhelp.htmlnu[PK|0]*8@@-node.gifnu[PK|0]tGfnfnAPIchunk5.htmlnu[PK|0]g I'object.gifnu[PK|0]޻I|h|hb9libxslt-api.xmlnu[PK|0]sssAPIchunk8.htmlnu[PK|0]xDAPIsymbols.htmlnu[PK|0]%d>d> python.htmlnu[PK|0]?S))7tutorial/libxslttutorial.xmlnu[PK|0]Bh99atutorial/libxslttutorial.htmlnu[PK|0]T HHǛtutorial/libxslt_tutorial.cnu[PK|0]XsWWZAPIchunk4.htmlnu[PK|0] 7smallfootonly.gifnu[PK|0]_oECAPIchunk13.htmlnu[PK|0]N[$[$ `docbook.htmlnu[PK|0]q~~mFAQ.htmlnu[PK|0]Gܡܡ#APIchunk3.htmlnu[PK|0]  =ELibxslt-Logo-180x168.gifnu[PK|0]/ enews.htmlnu[PK|0]qeo0o0 [bugs.htmlnu[PK|0]+*+*fduck.pngnu[PK|0] OOɶAPIchunk10.htmlnu[PK|0])l- Wredhat.gifnu[PK|0];?#### Jtemplates.gifnu[PK|0]eRhtml/index.htmlnu[PK|0]ed""html/libxslt-preproc.htmlnu[PK|0]}2html/libxslt-extensions.htmlnu[PK|0]66html/libxslt-functions.htmlnu[PK|0]iZ$$)html/libxslt-attributes.htmlnu[PK|0].2.2html/libxslt-imports.htmlnu[PK|0]T*BABAx6html/libxslt-pattern.htmlnu[PK|0]2ԣxhtml/libxslt-xsltInternals.htmlnu[PK|0]1+vZvZ$html/libxslt-variables.htmlnu[PK|0]:NNhtml/libxslt-security.htmlnu[PK|0]CZ  html/up.pngnu[PK|0]eRhtml/book1.htmlnu[PK|0]D lhtml/left.pngnu[PK|0]һyH\\thtml/libxslt-xsltutils.htmlnu[PK|0]VR9++html/libxslt-keys.htmlnu[PK|0]}fDnn^html/libxslt-xslt.htmlnu[PK|0]??  "html/libxslt-numbersInternals.htmlnu[PK|0]|QQ html/libxslt-templates.htmlnu[PK|0]lkno html/right.pngnu[PK|0]rW?@?@q html/libxslt-documents.htmlnu[PK|0]== html/libxslt-namespaces.htmlnu[PK|0]eR_ html/libxslt-lib.htmlnu[PK|0] ,,I !html/libxslt-xsltlocale.htmlnu[PK|0]| <7!html/home.pngnu[PK|0]G'':!html/libxslt-extra.htmlnu[PK|0](dOOb!html/libxslt-xsltexports.htmlnu[PK|0]̫{{|!html/libxslt-transform.htmlnu[PK|0]6ksE"w3c.pngnu[PK|0]zZZ M"APIfiles.htmlnu[PK|0]Rv"n"n-5#tutorial2/libxslt_pipes.xmlnu[PK|0]Zݼ\\#tutorial2/libxslt_pipes.cnu[PK|0]k@,?#tutorial2/libxslt_pipes.htmlnu[PK|0]fvx!:$APIchunk2.htmlnu[PK|0] hgg V$docs.htmlnu[PKwwM&$