Note
Please see Azure Cognitive Services for Speech documentation for the latest supported speech solutions.
SrgsRule Constructor (String, SrgsElement[])
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
'Declaration
Public Sub New ( _
id As String, _
ParamArray elements As SrgsElement() _
)
'Usage
Dim id As String
Dim elements As SrgsElement()
Dim instance As New SrgsRule(id, elements)
public SrgsRule(
string id,
params SrgsElement[] elements
)
Parameters
- id
Type: System.String
The identifier of the rule.
- elements
Type: []
An array of SrgsElement objects.
Exceptions
Exception | Condition |
---|---|
ArgumentNullException | id is a null reference (Nothing in Visual Basic). elements is a 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.
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.
<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>
See Also
Reference
Microsoft.Speech.Recognition.SrgsGrammar Namespace