Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/css/34.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Css 如何从主脚本向Xquery模块提供全局变量?_Css_Xml_Xpath_Xquery_Saxon - Fatal编程技术网

Css 如何从主脚本向Xquery模块提供全局变量?

Css 如何从主脚本向Xquery模块提供全局变量?,css,xml,xpath,xquery,saxon,Css,Xml,Xpath,Xquery,Saxon,目前,我通过一个外部变量将两个数据库的名称输入到我的主xql文件中。我想将这些值传递给我的任何XQL模块 例如,我可以有一个主脚本导入模块“mylib” 然后我向主脚本提供dbName外部变量,它可以工作,但我想以某种方式将它传递给我的模块 module namespace mylib = "http://example.org/mylib"; declare variable $mylib:dbName external; declare function m

目前,我通过一个外部变量将两个数据库的名称输入到我的主xql文件中。我想将这些值传递给我的任何XQL模块

例如,我可以有一个主脚本导入模块“mylib”

然后我向主脚本提供dbName外部变量,它可以工作,但我想以某种方式将它传递给我的模块

     module namespace mylib = "http://example.org/mylib";

     declare variable $mylib:dbName external;

     declare function mymod:print() as xs:string  {
         $mymod:dbName
     };
如何将本地dbName的值绑定到模块的实例$myLib:dbName

我试过:

  • 将主文件中的变量设置为全局变量,以便任何导入的模块都可以读取这些变量
  • 在模块中声明相同的变量,并尝试使用类似于声明变量$mylib:dbname:=$dbname的内容从主类分配它们
  • 将模块变量唯一地声明为外部变量,在我的主脚本中从它们获取值,然后尝试从那里读取它

有什么简单的解决办法吗??或者我必须静态地为任何模块定义相同的值吗?

为什么不将其作为参数传递给函数

mymod:print($dbname)

为什么不把它作为参数传递给函数呢

mymod:print($dbname)

如果XQuery处理器允许部分应用程序使用参数占位符,则可以在映射中返回一组方法,这些方法已绑定了
$dbname
参数

示例模块

xquery version "3.1";

module namespace mymod = "http://example.org/mymod";

declare function mymod:print ($dbname as xs:string) as xs:string  {
    $dbname
};

declare function mymod:items-by-name ($dbname as xs:string, $names as xs:string*) as xs:string  {
    collection($dbname)//item[@name = $names]
};

declare function mymod:get-bound-methods ($dbname as xs:string) as map(*) {
    map {
        (: return result of a function :)
        "print": mymod:print($dbname),
        (: return partially applied function:)
        "items-by-name": mymod:items-by-name($dbname, ?) 
    }
};

import module namespace mymod = "http://example.org/mymod" at "mymod.xqm";

declare variable $dbName external; 

declare variable $local:bound := mymod:get-bound-methods($dbName);

(: print evaluates to a xs:string :)
$local:bound?print,
(: items-by-name evaluates to a function with an arity of 1 :)
$local:bound?items-by-name("a"),
$local:bound?items-by-name(("a", "sequence", "of", "names"))

用法

xquery version "3.1";

module namespace mymod = "http://example.org/mymod";

declare function mymod:print ($dbname as xs:string) as xs:string  {
    $dbname
};

declare function mymod:items-by-name ($dbname as xs:string, $names as xs:string*) as xs:string  {
    collection($dbname)//item[@name = $names]
};

declare function mymod:get-bound-methods ($dbname as xs:string) as map(*) {
    map {
        (: return result of a function :)
        "print": mymod:print($dbname),
        (: return partially applied function:)
        "items-by-name": mymod:items-by-name($dbname, ?) 
    }
};

import module namespace mymod = "http://example.org/mymod" at "mymod.xqm";

declare variable $dbName external; 

declare variable $local:bound := mymod:get-bound-methods($dbName);

(: print evaluates to a xs:string :)
$local:bound?print,
(: items-by-name evaluates to a function with an arity of 1 :)
$local:bound?items-by-name("a"),
$local:bound?items-by-name(("a", "sequence", "of", "names"))


如果XQuery处理器允许部分应用程序使用参数占位符,则可以在映射中返回一组方法,这些方法已绑定了
$dbname
参数

示例模块

xquery version "3.1";

module namespace mymod = "http://example.org/mymod";

declare function mymod:print ($dbname as xs:string) as xs:string  {
    $dbname
};

declare function mymod:items-by-name ($dbname as xs:string, $names as xs:string*) as xs:string  {
    collection($dbname)//item[@name = $names]
};

declare function mymod:get-bound-methods ($dbname as xs:string) as map(*) {
    map {
        (: return result of a function :)
        "print": mymod:print($dbname),
        (: return partially applied function:)
        "items-by-name": mymod:items-by-name($dbname, ?) 
    }
};

import module namespace mymod = "http://example.org/mymod" at "mymod.xqm";

declare variable $dbName external; 

declare variable $local:bound := mymod:get-bound-methods($dbName);

(: print evaluates to a xs:string :)
$local:bound?print,
(: items-by-name evaluates to a function with an arity of 1 :)
$local:bound?items-by-name("a"),
$local:bound?items-by-name(("a", "sequence", "of", "names"))

用法

xquery version "3.1";

module namespace mymod = "http://example.org/mymod";

declare function mymod:print ($dbname as xs:string) as xs:string  {
    $dbname
};

declare function mymod:items-by-name ($dbname as xs:string, $names as xs:string*) as xs:string  {
    collection($dbname)//item[@name = $names]
};

declare function mymod:get-bound-methods ($dbname as xs:string) as map(*) {
    map {
        (: return result of a function :)
        "print": mymod:print($dbname),
        (: return partially applied function:)
        "items-by-name": mymod:items-by-name($dbname, ?) 
    }
};

import module namespace mymod = "http://example.org/mymod" at "mymod.xqm";

declare variable $dbName external; 

declare variable $local:bound := mymod:get-bound-methods($dbName);

(: print evaluates to a xs:string :)
$local:bound?print,
(: items-by-name evaluates to a function with an arity of 1 :)
$local:bound?items-by-name("a"),
$local:bound?items-by-name(("a", "sequence", "of", "names"))


因为我必须把它传给所有的Methods,我想知道是否有一个easz-waz,特别是如果我想要一些类似内部静态变量的Szncroniyation,因为我必须把它传给所有Methods,我想知道是否有一个easz-waz,特别是,如果我想要一些带有内部静态变量的szncroniyation,我也有类似的问题:我想将一个外部变量(称为“x”)从主模块传递到子模块。子模块使用此外部变量(“x”)构建全局变量,因此我无法将值(“x”)作为参数发送。这是一种方法吗?Xquery没有真正的全局变量。它们总是本地的。但如果这对于您的用例来说已经足够了,您可以修改
声明变量$local:bound:=mymod:get-bound方法($dbName)只返回修改后的值而不是映射。我有一个类似的问题:我想将一个外部变量(称为“x”)从主模块传递到子模块。子模块使用此外部变量(“x”)构建全局变量,因此我无法将值(“x”)作为参数发送。这是一种方法吗?Xquery没有真正的全局变量。它们总是本地的。但如果这对于您的用例来说已经足够了,您可以修改
声明变量$local:bound:=mymod:get-bound方法($dbName)
只返回修改后的值而不是映射。