Я создаю приложение UWP с возможностью распознавания речи.Я хочу сослаться на внешний файл грамматики из другого -root- файла.Вот код для корневого файла грамматики (с именем RootGrammar.xml
):
<?xml version="1.0" encoding="utf-8"?>
<grammar version="1.0" xml:lang="en-us"
root="topLevel"
xmlns="http://www.w3.org/2001/06/grammar"
tag-format="semantics/1.0"
mode="voice">
<rule id="topLevel">
<item>Hello</item>
<ruleref uri="words.xml"/>
</rule>
</grammar>
И внешний файл грамматики (с именем words.xml
):
<?xml version="1.0" encoding="utf-8"?>
<grammar version="1.0" xml:lang="en-us" root="words"
xmlns="http://www.w3.org/2001/06/grammar"
tag-format="semantics/1.0"
mode="voice">
<rule id="words" scope="public">
<one-of>
<item>world</item>
<item>universe</item>
<item>galaxy</item>
</one-of>
</rule>
</grammar>
Два файларасположены в той же папке (с именем Grammar
), папка находится на верхнем уровне решения.
Я пробовал много значений для атрибута URI в корневом файле грамматики, например:
uri= "/words.xml"
uri= "\words.xml"
uri = "../words.xml"
uri = "..\words.xml"
uri = "ms-appx:///Grammar///words.xml"
Я также пытался переименовать внешний файл в words.grxml
, также пытался явно определить правило в URI (то есть uri = "/words.xml#words"
), но все это привело к GrammarCompilationFailure
.