SAPI5 与标志 SVSFIsXML 相结合,允许插入自定义标记,例如以以下形式:
<customtag>Speak this text</customtag>
此标记将被识别为
FragList->State.eAction == SPVA_ParseUnknownTag
但是,当我使用新标准 SSML 时,以下 XML 代码引发错误
Invalid XML content:
Inner Exception: XmlException: The character '=' (hex value 0x3D) may not be contained within a name. Line 1, position 126.
这是代码:
<speak version='1.0' xmlns="http://www.w3.org/2001/10/synthesis" xml:lang='en-US'>
<voice name='Microsoft Sam'>
<customtag="1">
Speak this text!
</customtag>
</voice>
</speak>
以下 XML 代码引发不同的错误:
System.FormatException: The element "customtag" is invalid.
这是代码:
<speak version='1.0' xmlns="http://www.w3.org/2001/10/synthesis" xml:lang='en-US'>
<voice name='Microsoft Sam'>
<customtag>
Speak this text!
</customtag>
</voice>
</speak>
如果我删除自定义标签,它可以正常工作。
我的代码中是否有任何明显的 XML 错误,或者使用自定义标记根本不起作用?
谢谢。
我的代码中是否有任何明显的 XML 错误
<customtag="1">
是一个明显的错误。元素名称不是属性,不能有值。
还是使用自定义标签根本不起作用?
XML的全部意义在于允许设计自定义标记语言。
您似乎有一个语音合成文档,该文档使用使用 XML 设计的自定义标记语言。
"元素'自定义标记'无效"错误消息指出语音合成文档中不允许customtag
。
可以设计语音合成 + 其他标记语言,但您的工具没有对此进行测试。它需要一个纯粹的语音合成文档。
<customtag="1">
不是格式正确的XML。我不知道你正在使用的工具,但似乎它们允许你创建格式错误的XML,这显然不会解析。