phpのSaxonに関するいくつかの問題のため、私は現在、Javaコマンドを実行し、結果をHTMLに変換し、そのHTMLをページに表示し、結果のhtmlを削除するphp呼び出しを行う複雑な設定をしています表示後それが助け場合、私はページへのリンクを提供することができますが、実際の.xqファイルはかなり単純化され:Saxonは.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>
し、それを実行するコマンド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>
私の問題は、XMLファイルはI」ということです私は彼らがプライムタイムの準備が整うと思うまで、パスワードで保護されたフォルダの背後に置いておきたいと思います。私はfilefolderの場所にある.htaccessファイルの任意の並べ替えを持っている場合、私は、次のエラーメッセージが表示されます:
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.
それは何が起こっていることは、XMLではありませんこれは、.htaccessファイルになってきたということであるように私にはかなり明白ですそして、それをどうしたらいいのか分からない。私の質問は、私のxqueryファイルに、Saxonに.htaccessをコレクションに含めないように指示する方法があるかどうかです。私は確信していますが、私が見つけたものは、あなたが構築しているコレクションではなく、ファイル名を見つけることです。