En raison de certains problèmes avec la version php de Saxon, j'ai actuellement une configuration compliquée où je fais un appel PHP pour exécuter une commande java, convertir les résultats en HTML, afficher ce HTML sur ma page, puis supprimer le html résultant après l'affichage. Je peux fournir un lien vers la page si elle aide, mais le fichier .xq réelle est assez simpliste:Can Saxon fonctionne sur une page avec .htaccess?
xquery version "1.0" encoding "UTF-8";
declare namespace tei="http://www.tei-c.org/ns/1.0";
declare variable $zone external;
declare variable $line external;
declare variable $collection external;
declare function local:if-empty
($arg as item()? ,
$value as item()*) as item()* {
if (string($arg) != '')
then data($arg)
else $value
};
declare function local:remove-elements($input as element(), $remove-names as xs:string*) as element() {
element {node-name($input) }
{$input/@*,
for $child in $input/node()[not(name(.)=$remove-names)]
return
if ($child instance of element())
then local:remove-elements($child, $remove-names)
else $child
}
};
declare function local:remove-empty-elements($nodes as node()*) as node()* {
for $node in $nodes
return
if (empty($node)) then() else
if ($node instance of element())
then if (normalize-space($node) = '')
then()
else element { node-name($node)}
{ $node/@*,
local:remove-empty-elements($node/node())}
else if ($node instance of document-node())
then local:remove-empty-elements($node/node())
else $node
} ;
<list>
{
let $q:=collection($collection)
let $remove-list := ('note')
(:let $q:=local:remove-empty-elements($q):)
for $y in $q
let $s := $y//tei:surface
let $t := $y//tei:titleStmt/@xml:id
let $m := $y//tei:msDesc/@xml:id
let $z := $s/tei:zone[@n=$zone]
let $l := $z/tei:line[@n=$line]
let $w := concat($y//tei:msDesc/tei:msIdentifier/tei:settlement/text(),', ',$y//tei:msDesc/tei:msIdentifier/tei:institution/text(),' ',$y//tei:msDesc/tei:msIdentifier/tei:idno/text())
let $g := concat($t, "/" , $m, "/", substring-before($l/../../tei:graphic/@url,"."),".html")
let $o:=local:remove-elements($l/tei:orig,$remove-list)
where ($z//tei:line/@n = "l.1")
return
<item>{$w}: <ref target="{$g}">{$o}</ref></item>}
</list>
et la commande pour l'exécuter est java -Xms128m -Xmx1024m -XX:+UseCompressedOops -cp saxon9he.jar net.sf.saxon.Query -t -q:test.xq -o:1505740041.41932650059544.xml line=l.4 zone=EETS.QD.8 collection=file:<filefolder>
Mon problème est que les fichiers xml I » Je travaille avec des transcriptions actuellement non publiées, et je voudrais les garder derrière un dossier protégé par mot de passe jusqu'à ce que je pense qu'ils sont prêts pour le prime time. Si j'ai toute sorte de fichier .htaccess dans l'emplacement filefolder, je reçois le message d'erreur suivant:
Building tree for file:<filefolder>/.htaccess using class net.sf.saxon.tree.tiny.TinyBuilder
Error on line 1 column 1 of .htaccess:
SXXP0003: Error reported by XML parser: Content is not allowed in prolog.
Query failed with dynamic error: org.xml.sax.SAXParseException; systemId: file:<filefolder>/.htaccess; lineNumber: 1; columnNumber: 1; Content is not allowed in prolog.
Il me est assez évident que ce qui se passe est que ça devient le fichier .htaccess, qui n'est pas XML , et puis ne sait pas quoi faire avec. Ma question est de savoir s'il y a un moyen dans mon fichier xquery de dire à Saxon de ne pas inclure .htaccess dans la collection. Je suis sûr que c'est le cas, mais tout ce que j'ai trouvé est de trouver des noms de fichiers, pas de les supprimer dans la collection que vous construisez.