Php 如何在XSD中验证XML文档之间的ID?
我正在尝试为iOS和Android应用程序制作一个跨平台的字符串管理系统(这样我就不必翻译这两个应用程序,我可以将一个应用程序中的字符串重新使用到另一个应用程序中) 为此,我使用以下流程:Php 如何在XSD中验证XML文档之间的ID?,php,xml,xsd,xsd-validation,xml-validation,Php,Xml,Xsd,Xsd Validation,Xml Validation,我正在尝试为iOS和Android应用程序制作一个跨平台的字符串管理系统(这样我就不必翻译这两个应用程序,我可以将一个应用程序中的字符串重新使用到另一个应用程序中) 为此,我使用以下流程: 存储跨平台字符串标识符的XML(可能具有comment或iOS only,…)等属性) 按钮\u登录\u facebook 按钮\登录\苹果 ... 然后我有N种受支持语言的N种翻译: <!-- translation_en.xml --> <translation lang=&quo
comment
或iOS only
,…)等属性)
按钮\u登录\u facebook
按钮\登录\苹果
...
<!-- translation_en.xml -->
<translation lang="en">
<string id="button_signin_facebook">Continue with Facebook</string>
<string id="button_signin_apple">Continue with Apple ID</string>
...
</translation>
继续使用Facebook
继续使用Apple ID
...
translation_lang.xml
文件创建XSD,强制执行string
元素的id
属性是identifiers.xml
文件中所有id
的“枚举”(或“引用”)(就像数据库中的外键一样)
我是XSD新手,我发现我可以在XSD中进行枚举,但这不是我想要的。(标识符值需要在XML文件identifiers.XML中,而不是在模式中,因为它们不是固定的。)XSD不能表示单独XML文档之间的约束 其他可能性:
谢谢你的回答。实际上,在生成平台字符串文件之前,我用PHP验证了所有这些,但是XSD验证对于IDE自动完成非常有用。如果使用解决方案2,如何在单个文件中表示外键?一旦标识符和引用位于单个文件中,您可以使用
xsd:key
和xsd:keyref
验证此类引用完整性约束。例如,请参阅。谢谢,我将查看:)跨文档验证的另一种可能性是使用XSD1.1断言。从技术上讲,模式中使用的XPath断言不能使用doc()函数引用外部文档,但您可能会发现并非所有处理器都施加了此限制。
<!-- translation_en.xml -->
<translation lang="en">
<string id="button_signin_facebook">Continue with Facebook</string>
<string id="button_signin_apple">Continue with Apple ID</string>
...
</translation>