【问题标题】:SSML and single vs. double-quoted element attributesSSML 和单引号与双引号元素属性
【发布时间】:2020-11-12 20:51:58
【问题描述】:

假设我有一些 SSML:

<speak>
  <p>Now I will read some numbers.</p>
  <p>
    <say-as interpret-as="digits">369148034</say-as>,
  <p>
</speak>

当我使用 AWS PinpointSMSVoice(通过 AWS JS 开发工具包)将其作为语音消息的文本发送时,消息失败并显示“错误请求”。但是,如果我将所有内容合并到一行并将双引号转换为单引号,AWS 会接受它并且它可以工作。

在阅读more about SSML in general 时,我看到以下警告:

不要忘记在属性值周围使用双引号。格式良好、有效的 XML 标准要求属性值用双引号括起来。

我的预感是 AWS JS 开发工具包中存在一个错误,该错误会阻止对带有双引号的多行字符串进行正确编码。我认为它没有正确逃逸,但我不确定。

问题是……这只是 AWS 的一个怪癖吗?或者在实践中,SSML 是否应该对属性使用单引号?或者,双引号?

【问题讨论】:

  • “如果我将所有内容合并到一行并将双引号转换为单引号” ...您必须同时做这两件事吗?
  • @Michael-sqlbot 是的!如果我只做一个,我会收到一个请求错误。有趣的是,如果我将这个带有新行和双引号的常规 SSML 放入 AWS 控制台上的测试器中,它就可以工作。这就是我认为问题出在 SDK 的部分原因。 SDK 文档确实提到了换行问题,但没有提到双引号。但是,他们的示例使用单引号。我以前从未使用过 SSML,所以我只是想完全了解发生了什么。
  • 你会从一个简单的可验证示例中展示实际代码,即损坏与工作的东西吗?需要其他人可以运行的代码来复制错误和成功条件。

标签: amazon-web-services aws-pinpoint ssml


【解决方案1】:

Google 的答案取决于您的实现。 “您可能需要转义引号”或者如果他们正在对其进行编码 xml allows " 。他们还说“您还应该避免使用 XML 控制字符,例如 ''、'&'、引号和引号在要转换为音频的文本中”,换句话说,可能是无效的 XML。

TL;DR;

视情况而定。

【讨论】:

  • 这两段似乎在处理不同的事情。首先是同意 AWS JS SDK 已损坏,因为它不会自动转义此数据。第二段是解决文本中字符之间的歧义,用户可能会忘记转义保留的实体。无论如何,这就是我的看法。
猜你喜欢
  • 2011-09-17
  • 2012-12-13
  • 2012-12-30
  • 1970-01-01
  • 1970-01-01
  • 2013-09-11
  • 1970-01-01
  • 2018-06-19
  • 2011-06-02
相关资源
最近更新 更多