A <ruleref> tag can reference another defined rule within the same local grammar.
| uri | Specifes a local rule reference. Precede the local rule identifier with a "#" symbol. |
| type | This attribute is not supported. |
| special | Can be set to either "null" or "void". |
| xml:lang | (defaults to "xml:lang" global property or the "xml:lang" attribute of the <grammar> tag) The language identifier as defined in RFC3066. |
For examples and usage information, please refer to the Speech Recognition Grammar Specification.
<?xml version="1.0"?>
<vxml version="2.0">
<form id="start">
<field name="dt">
<grammar root="main" type="application/srgs+xml" mode="voice">
<rule id="main" scope="public">
<item>
<ruleref uri="#month"/>
<ruleref uri="#day"/>
</item>
<tag> month = month.SWI_literal; day = day.SWI_literal; </tag>
</rule>
<rule id="month">
<one-of>
<item>May</item>
<item>June</item>
<item>October</item>
</one-of>
</rule>
<rule id="day">
<one-of>
<item>first</item>
<item>second</item>
<item>third</item>
</one-of>
</rule>
</grammar>
<prompt>Please say a date.</prompt>
<filled>
<prompt bargein="false">
I think you said month <value expr="dt.month"/>
day <value expr="dt.day"/>.
</prompt>
</filled>
<nomatch>
I'm sorry, I didn't catch that.
<reprompt/>
</nomatch>
</field>
</form>
</vxml>The output of the above script would be:
Computer: Please say a date.
Human: June second.
Computer: I think you said month June day second.
None