3

SDL Tridion 使用 XML 模式定义来定义存储在 Tridion 组件中的内容。XSD 可以使用限制/方面指示符来限制对 XML 节点有效的内容。

Chris Summers在训练中偶然发现了其中一些,特别是我们可以在 SDL Tridion 2011 中设置minOccurs和指标,如下所示:maxOccurs

<xsd:element name="someField" minOccurs="2" maxOccurs="5" type="xsd:normalizedString">

Andrey Marchuk 在同一篇文章中提到了其他选项:

指标

  • MaxValue
  • MinValue

限制

  • FractionDigits
  • MaxLength
  • MinLength
  • Pattern
  • TotalDigits

顺便说一句,这些是特定于 XSD 的吗?

  • IsMaxValueExclusive
  • IsMinValueExclusive

如何将 *限制添加到以下示例 Tridion 架构(源)中?*

<xsd:schema xmlns="http://createandbreak.net/schema/example" xmlns:tcmi="http://www.tridion.com/ContentManager/5.0/Instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" targetNamespace="http://createandbreak.net/schema/example">
    <xsd:import namespace="http://www.tridion.com/ContentManager/5.0/Instance"></xsd:import>
    <xsd:annotation>
        <xsd:appinfo>
            <tcm:Labels xmlns:tcm="http://www.tridion.com/ContentManager/5.0">
                <tcm:Label ElementName="someField" Metadata="false">someField</tcm:Label>
            </tcm:Labels>
        </xsd:appinfo>
    </xsd:annotation>
    <xsd:element name="Content">
        <xsd:complexType>
            <xsd:sequence>
                <xsd:element name="someField" minOccurs="2" maxOccurs="5" type="xsd:normalizedString">
                    <xsd:annotation>
                        <xsd:appinfo>
                            <tcm:ExtensionXml xmlns:tcm="http://www.tridion.com/ContentManager/5.0"></tcm:ExtensionXml>
                        </xsd:appinfo>
                    </xsd:annotation>
                </xsd:element>
            </xsd:sequence>
        </xsd:complexType>
    </xsd:element>
</xsd:schema>

W3Schools 为例,这将是一个使用正则表达式将字段限制为 5 位的非 Tridion XSD:

<xs:element name="prodid">
  <xs:simpleType>
    <xs:restriction base="xs:integer">
      <xs:pattern value="[0-9][0-9][0-9][0-9][0-9]"/>
    </xs:restriction>
  </xs:simpleType>
</xs:element>

我尝试将xs命名空间更改为,xsd但我不确定 XSD 限制在 (Tridion) 架构中的位置。

4

3 回答 3

4

我相信 XS 和 XSD 在这里有些无关紧要。两者实际上都是引用同一个命名空间的命名空间前缀。这在这篇文章中有所描述。

如果您查看您引用的站点 ( http://www.w3schools.com/schema/default.asp ) 中的示例,您将看到xs名称空间前缀指的是与 Tridion 架构中http://www.w3.org/2001/XMLSchema相同的名称。xsd

例如

  • xmlns:xsd="http://www.w3.org/2001/XMLSchema"
  • xmlns:xs="http://www.w3.org/2001/XMLSchema"

因此 xsd 与 xs 相同。

还是我完全错过了你的观点?

如果您只是在寻找如何应用限制,这来自 SDL Tridion 文档(此处但需要密码):

<xsd:element name="NumberFieldWithMultipleFacets">
    <xsd:simpleType>
        <xsd:restriction base="xsd:decimal">
            <xsd:totalDigits value="4"/>
            <xsd:fractionDigits value="2"/>
            <xsd:minInclusive value="10"/>
            <xsd:maxInclusive value="20"/>
        </xsd:restriction>
    </xsd:simpleType>
</xsd:element>
于 2012-05-02T20:45:42.237 回答
1

如果您正在寻找 Xml Schema 中可能方面的列表,那么您需要查看此处。也许然后检查其中哪些受到 Tridion 的尊重/支持是一件简单的事情

于 2012-05-02T23:20:33.527 回答
1

例如,我仍然想念 xsd:ID,它适用于 WebForms(是的,从 1.0 版开始),但不适用于最新的 SDL Tridion GUI(2013 年除外,未经测试)。

我希望所有有效的 xsd 都能在 Tridion GUI 中工作。

例如,当您将文本字段限制为 min="30" max="70" 个字符时,内容编辑器将看到一个计数器。

将是一个非常好的 GUI 更新。因为它将使 WebForms 在普通(!) Tridion GUI 中成为可能。然后可以通过内容管理创建新字段。创建新的 HTML5 网络表单(经过测试!)只需不到 2 分钟。

所以请更新 GUI 以完全支持 xsd。

于 2013-06-24T21:11:53.087 回答