SrgsRule Constructor (String, array<SrgsElement>[]()[][]) |
SrgsRule Class Example See Also Send Feedback |
Initializes a new instance of the SrgsRule class from an array of SrgsElement objects.
Namespace:
Microsoft.Speech.Recognition.SrgsGrammar
Assembly:
Microsoft.Speech (in Microsoft.Speech.dll)
Syntax
Visual Basic (Declaration) |
---|
Public Sub New ( _ id As String, _ ParamArray elements As SrgsElement() _ ) |
Visual Basic (Usage) |
---|
Dim id As String Dim elements As SrgsElement() Dim instance As New SrgsRule(id, elements) |
C# |
---|
public SrgsRule( string id, params SrgsElement[] elements ) |
Parameters
- id
- Type: System..::..String
The identifier of the rule.
- elements
- Type: array<Microsoft.Speech.Recognition.SrgsGrammar..::..SrgsElement>[]()[][]
An array of SrgsElement objects.
Exceptions
Exception | Condition |
---|---|
ArgumentNullException | id is nullNothingnullptrunita null reference (Nothing in Visual Basic). elements is nullNothingnullptrunita null reference (Nothing in Visual Basic). |
ArgumentOutOfRangeException | id is empty. |
FormatException | id is not a proper rule identifier. |
Remarks
The SrgsRule constructor initializes the Id property. The identifier must be unique within a given grammar.
The SrgsRule constructor throws a FormatException in the following circumstances:
id is not a valid XML name, as defined in Extensible Markup Language (XML) 1.0 (Fifth Edition). To paraphrase this definition, a valid XML name must begin with a letter, an underscore ('_'), or a colon (':') and can be followed by zero or more NameChar characters (also defined in the XML specification).
id is "NULL" or "VOID" or "GARBAGE".
id contains at least one invalid rule ID character. These characters are: '?', '*', '+', '|', '(', '), '^', '$', '/', ';', '.', '=', '<', '>', '[', ']', '{', '}', '\\', ' ', '\t', '\r', and '\n'.
Examples
The following example creates a grammar that recognizes the phrase "A nation that has won the World Cup is" followed by the name of a country that has won the World Cup. The example creates a public rule named WorldCupWinner. The example then creates two SrgsRule objects, ruleEurope and ruleSAmerica, passing in a String for the rule identifier and an SrgsElement array containing a SrgsOneOf object. Subsequently, the example adds rule references to ruleEurope and ruleSAmerica from the rule WorldCupWinner.
Copy Code | |
---|---|
public void WorldSoccerWinners () { // Create a grammar from an SRGSDocument, create a new rule // and set its scope to public. SrgsDocument srgsGrammar = new SrgsDocument (); SrgsRule winnerRule = new SrgsRule ("WorldCupWinner"); winnerRule.Scope = SrgsRuleScope.Public; // Add the introduction. winnerRule.Elements.Add (new SrgsItem ("A nation that has won the world cup is")); // Create the rule for the European nations. SrgsOneOf oneOfEurope = new SrgsOneOf(new SrgsItem[] {new SrgsItem("England"), new SrgsItem("France"), new SrgsItem("Germany"), new SrgsItem("Italy")}); SrgsRule ruleEurope = (new SrgsRule("EuropeanNations", new SrgsElement[] {oneOfEurope})); // Create the rule for the South American nations. SrgsOneOf oneOfSAmerica = new SrgsOneOf(new SrgsItem[] {new SrgsItem("Argentina"), new SrgsItem("Brazil"), new SrgsItem("Uruguay")}); SrgsRule ruleSAmerica = (new SrgsRule("SouthAmericanNations", new SrgsElement[] {oneOfSAmerica})); // Add references to winnerRule for ruleEurope and ruleSAmerica. winnerRule.Elements.Add(new SrgsOneOf(new SrgsItem[] {(new SrgsItem (new SrgsRuleRef(ruleEurope))), new SrgsItem(new SrgsRuleRef(ruleSAmerica))})); // Add all the rules to the grammar and make winnerRule // the root rule of the grammar. document.Rules.Add(new SrgsRule[] {winnerRule, ruleEurope, ruleSAmerica}); srgsGrammar.Root = winnerRule; } |
The created grammar has the following form.
Copy Code | |
---|---|
<grammar version="1.0" xml:lang="en-US" xmlns="http://www.w3.org/2001/06/grammar" root="WorldCupWinner"> <rule id="WorldCupWinner" scope="public"> <item> A nation that has won the world cup is </item> <one-of> <item> <ruleref uri="#EuropeanNations" /> </item> <item> <ruleref uri="#SouthAmericanNations" /> </item> </one-of> </rule> <rule id="EuropeanNations"> <one-of> <item> England </item> <item> France </item> <item> Germany </item> <item> Italy </item> </one-of> </rule> <rule id="SouthAmericanNations"> <one-of> <item> Argentina </item> <item> Brazil </item> <item> Uruguay </item> </one-of> </rule> </grammar> |