可以用的.htaccess在页面上撒克逊工作?
由于与撒克逊人的PHP版本的一些问题,我现在有一个令人费解的设置,其中我做了PHP的调用来执行Java命令,结果转换成HTML,显示我的页面上的HTML,然后删除生成的HTML显示后。我可以提供一个链接页面是否有帮助,但实际.xq文件相当简单:可以用的.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文件我米,工作是目前尚未发布抄录,我想,让他们受密码保护的文件夹背后,直到我认为他们已经准备好黄金时间。如果我在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.
这是很明显,我认为发生的事情是,它得到的.htaccess文件,这不是XML ,然后不知道该如何处理它。我的问题是,如果有一个在我的XQuery文件的方式来告诉撒克逊不包括集合中的.htaccess。我确定有,但是我发现的一切都是关于寻找文件名,而不是在你正在构建的集合中压制它们。
好吧,我只是愚蠢。解决的办法是增加一个CONCAT声明追加选择信息到$集合变量,就像这样:
let $collection:=concat($collection, '?select=*.xml')
let $q:=collection($collection)
let $remove-list := ('note')
如果你需要的东西比使用glob模式选择更精细的,那么你可以使用uri-collection()
功能返回目录中文件的URI,然后使用doc()
来处理你真正感兴趣的文件。例如,如果你想要所有不是以“。”开头的东西,这会给你一个解决方案,不管它的扩展如何。
你可以用uri-collection()
做的另一件事是处理try/catch块中的每个返回的URI,以便完全控制错误处理。