GrammarBuilder.AppendRuleReference 方法

定义

为语法元素的当前顺序追加语法文件或语法规则。

重载

AppendRuleReference(String)

为语法元素的当前顺序追加语法定义文件。

AppendRuleReference(String, String)

为语法元素的当前顺序追加指定的语法定义文件规则。

注解

AppendRuleReference方法可以将语法文件或语法规则附加到文件中。 这些方法允许应用程序使用预先部署或可公开使用的语法规则。 应用程序必须对指定语法文件的位置具有读取访问权限。

这些方法可以从以下格式读取语音识别语法。

使用扩展名为的二进制语法文件将 XML 格式的 SRGS 语法文件编译为二进制语法文件可以减少搜索匹配所用的时间,尤其是当语法要求识别大量字词和短语时。 有关将 SRGS 语法编译为 CFG 二进制格式的信息,请参阅 SrgsGrammarCompiler

AppendRuleReference(String)

为语法元素的当前顺序追加语法定义文件。

public:
 void AppendRuleReference(System::String ^ path);
public void AppendRuleReference (string path);
member this.AppendRuleReference : string -> unit
Public Sub AppendRuleReference (path As String)

参数

path
String

在一个支持的布局描述语音识别语法的路径通用资源标识符(URI)的文件。

示例

下面的 c # 示例将创建一个语音识别语法,该语法使用 Cities 本地 SRGS 文件 grxml 中名为的规则。 下面的 c # 代码示例中将显示 grxml 文件的内容。

private static Grammar CreateCitiesGrammar1()  
{  
  GrammarBuilder builder = new GrammarBuilder();  
  builder.AppendRuleReference("file://c:/temp/cities.grxml");  

  Grammar citiesGrammar = new Grammar(builder);  
  citiesGrammar.Name = "Cities Grammar 1";  
  return citiesGrammar;  
}  
<?xml version="1.0" encoding="UTF-16" ?>  
<grammar version="1.0" xml:lang="en-US"  
         xmlns="http://www.w3.org/2001/06/grammar"  
         tag-format="semantics/1.0" root="Main">  

  <!-- cities.grxml:   
    Defines an SRGS grammar for requesting a flight. This grammar includes  
    a Cities rule that lists the cities that can be used for departures  
    and destinations. -->  

  <rule id="Main">  
    <item>  
      I would like to fly from <ruleref uri="#Cities"/>  
      to <ruleref uri="#Cities"/>  
    </item>  
  </rule>  

  <rule id="Cities" scope="public">  
    <one-of>  
      <item> Seattle </item>  
      <item> Los Angeles </item>  
      <item> New York </item>  
      <item> Miami </item>  
    </one-of>  
  </rule>  
</grammar>  

注解

参数提供的 URI path 可以是本地的,也可以是远程的。 应用程序必须对指定语法文件的位置具有读取访问权限。

W3C 语音识别语法规范 (SRGS) 表示形式可以定义根规则。 此方法将语法从其根规则开始追加到语法元素的当前序列。 若要追加特定语法规则,请使用 AppendRuleReference 方法。

另请参阅

适用于

AppendRuleReference(String, String)

为语法元素的当前顺序追加指定的语法定义文件规则。

public:
 void AppendRuleReference(System::String ^ path, System::String ^ rule);
public void AppendRuleReference (string path, string rule);
member this.AppendRuleReference : string * string -> unit
Public Sub AppendRuleReference (path As String, rule As String)

参数

path
String

在一个支持的布局描述语音识别语法的路径通用资源标识符(URI)的文件路径。

rule
String

规则的追加、或追加语法文件的默认根规则的标识符 null

示例

下面的 c # 示例将创建一个语音识别语法,该语法使用 Cities 本地 SRGS 文件 grxml 中名为的规则。 下面的 c # 代码示例中将显示 grxml 文件的内容。

private static Grammar CreateCitiesGrammar2()  
{  
  GrammarBuilder builder = new GrammarBuilder();  
  builder.Append("Does");  
  builder.AppendRuleReference(@"c:\temp\cities.grxml", "Cities");  
  builder.Append("have a shuttle");  

  Grammar citiesGrammar = new Grammar(builder);  
  citiesGrammar.Name = "Cities Grammar 2";  
  return citiesGrammar;  
}  
<?xml version="1.0" encoding="UTF-8" ?>  
<grammar version="1.0" xml:lang="en-US"  
         xmlns="http://www.w3.org/2001/06/grammar"  
         tag-format="semantics/1.0" root="Main">  

  <!-- cities.grxml:   
    Defines an SRGS grammar for requesting a flight. This grammar includes  
    a Cities rule that lists the cities that can be used for departures  
    and destinations. -->  

  <rule id="Main">  
    <item>  
      I would like to fly from <ruleref uri="#Cities"/>  
      to <ruleref uri="#Cities"/>  
    </item>  
  </rule>  

  <rule id="Cities" scope="public">  
    <one-of>  
      <item> Seattle </item>  
      <item> Los Angeles </item>  
      <item> New York </item>  
      <item> Miami </item>  
    </one-of>  
  </rule>  
</grammar>  

注解

参数提供的 URI path 可以是本地的,也可以是远程的。 应用程序必须对指定语法文件的位置具有读取访问权限。

您可以使用 AppendRuleReference 方法来追加语法文件(以其根规则开头)。

另请参阅

适用于