<srcschema>
的基本结构如下:
<srcSchema>
<enumeration>
... //definition of enumerations
</enumeration>
<element> //definition of the root <element> (mandatory)
<compute-string/> //definition of a compute-string
<dbindex>
... //definition of indexes
</dbindex>
<key>
... //definition of keys
</key>
<sysFilter>
... //definition of filters
</sysFilter>
<attribute>
... //definition of fields
</attribute>
<element> //definition of sub-<element>
<attribute> //(collection, links or XML)
... //and additional fields
</attribute>
...
</element>
</element>
<methods> //definition of SOAP methods
<method>
...
</method>
...
</methods>
</srcSchema>
数据模式的XML文档必须包含<srcschema>
根元素,其中name和命名空间属性用于填充模式名称及其命名空间。
<srcSchema name="schema_name" namespace="namespace">
...
</srcSchema>
让我们使用以下XML内容来说明数据模式的结构:
<recipient email="John.doe@aol.com" created="2009/03/12" gender="1">
<location city="London"/>
</recipient>
使用其相应的数据模式:
<srcSchema name="recipient" namespace="cus">
<element name="recipient">
<attribute name="email"/>
<attribute name="created"/>
<attribute name="gender"/>
<element name="location">
<attribute name="city"/>
</element>
</element>
</srcSchema>
模式的入口点是其主要元素。 由于它的名称与模式相同,并且它应该是根元素的子元素,因此易于识别。 内容的描述以此元素开头。
在我们的示例中,主元素由以下行表示:
<element name="recipient">
主元素后面的元素<attribute>
和<element>
使您能够定义XML结构中数据项的位置和名称。
在我们的示例模式中,以下是:
<attribute name="email"/>
<attribute name="created"/>
<attribute name="gender"/>
<element name="location">
<attribute name="city"/>
</element>
必须遵守下列规则:
每个<element>
和<attribute>
必须通过name属性通过名称进行标识。
元素的名称应简明,最好是英文,并且只包括符合XML命名规则的授权字符。
在XML结构中,只有<element>
元素可以包含<attribute>
元素和<element>
元素。
<attribute>
元素在<element>
中必须具有唯一的名称。
建议在多行数据字符串中使用<elements>
。
数据类型是通过<attribute>
和<element>
元素中的type属性输入的。
<attribute>
元素和<element>
元素的说明中提供详细列表。
如果未填充此属性,则string是默认数据类型,除非元素包含子元素。 如果它这样做,则它仅用于按层次结构化元素(我们示例中的<location>
元素)。
模式支持以下数据类型:
字符串:字符串。示例:名字,城镇等。
可以通过length属性(可选,默认值“255”)指定大小。
布尔:布尔字段。可能值的示例:true/false、0/1、yes/no等。
字节、 短、 长:整数(1字节、2字节、4字节)。示例:年龄、帐号、积分等。
多次:多次精度浮点数。示例:价格、价格等。
date, datetime:日期和日期+时间。示例:出生日期、购买日期等。
datetimenotz:日期+时间,无时区数据。
timespan:持续时间。示例:资历。
memo:长文本字段(多行)。示例:描述、注释等。
uuid:“uniqueidentifier”字段以支持GUID(仅在Microsoft SQL Server中受支持)。
要在Microsoft SQL Server以外的引擎中包含uuid字段,必须添加“newuid()”函数并用其默认值完成。
下面是我们输入的类型的示例模式:
<srcSchema name="recipient" namespace="cus">
<element name="recipient">
<attribute name="email" type="string" length="80"/>
<attribute name="created" type="datetime"/>
<attribute name="gender" type="byte"/>
<element name="location">
<attribute name="city" type="string" length="50"/>
</element>
</element>
</srcSchema>
下表列表了Adobe Campaign为不同数据库管理系统生成的数据类型的映射。
Adobe Campaign |
PosgreSQL |
Oracle |
Teradata |
DB2 |
MS SQL |
字符串 |
VARCHAR(255) |
VARCHAR2(如果unicode为NVARCHAR2) |
VARCHAR(如果为Unicode,则为VARCHAR字符集UNICODE) |
VARCHAR |
VARCHAR(NVARCHAR if unicode) |
Boolean |
SMALLINT |
NUMBER(3) |
NUMERIC(3) |
SMALLINT |
TINYINT |
字节 |
SMALLINT |
NUMBER(3) |
NUMERIC(3) |
SMALLINT |
TINYINT |
短 |
SMALLINT |
NUMBER(5) |
SMALLINT |
SMALLINT |
SMALLINT |
多次 |
多次精度 |
FLOAT |
FLOAT |
多次 |
FLOAT |
长 |
INTEGER |
NUMBER(10) |
INTEGER |
INTEGER |
INT |
Int64 |
BIGINT |
NUMBER(20) |
NUMERIC(20) |
BIGINT |
BIGINT |
日期 |
DATE |
DATE |
TIMESTAMP |
DATE |
DATETIME |
时间 |
TIME |
FLOAT |
TIME |
TIME |
FLOAT |
Datetime |
TIMESTAMPZ |
DATE |
TIMESTAMP |
TIMESTAMP |
MS SQL < 2008:DATETIME MS SQL >= 2012:DATETIMEOFFSET |
Datetimenotz |
TIMESTAMPZ |
DATE |
TIMESTAMP |
TIMESTAMP |
MS SQL < 2008:DATETIME MS SQL >= 2012:DATETIME2 |
Timespan |
多次精度 |
FLOAT |
FLOAT |
多次 |
FLOAT |
Memo |
TEXT |
CLOB(如果为Unicode,则为NCLOB) |
CLOB(如果为Unicode,则为CLOB字符集UNICODE) |
CLOB(6M) |
TEXT(NTEXT if Unicode) |
Blob |
BLOB |
BLOB |
BLOB |
BLOB(4M) |
图像 |
数据模式的<elements>
和<attributes>
元素可以用各种属性进行丰富。 您可以填充标签以描述当前元素。
通过label属性可以输入简短说明。
标签与实例的当前语言关联。
示例:
<attribute name="email" type="string" length="80" label="Email"/>
可从Adobe Campaign客户端控制台输入表单中查看该标签:
使用desc属性可以输入长描述。
描述可从Adobe Campaign客户端控制台主窗口状态栏的输入表单中查看。
说明与实例的当前语言相关联。
示例:
<attribute name="email" type="string" length="80" label="Email" desc="Email of recipient"/>
default属性允许您定义在内容创建时返回默认值的表达式。
该值必须是符合XPath语言的表达式。 有关详细信息,请参阅 Referencing with XPath。
示例:
当前日期:default="GetDate()"
计数器:default="'FRM'+CounterValue('myCounter')"
在此示例中,默认值是使用字符串的串联和使用免费计数器名称调用CounterValue函数来构建的。 每次插入时,返回的数字递增1。
在Adobe Campaign客户端控制台中,Administration>Counters节点用于管理计数器。
要将默认值链接到字段,可以使用<default> or <sqldefault> field. </sqldefault> </default>
<default>
:允许您在创建图元时使用默认值预填充字段。该值不是默认的SQL值。
<sqldefault>
:允许您在创建字段时具有添加值。此值显示为SQL结果。 在模式更新期间,只有新记录将受此值影响。
使用userEnum属性,您可以定义一个免费明细列表,以记忆和显示通过此字段输入的值。 语法如下:
userEnum="明细列表名称"
可以自由选择给明细列表的名称并与其他字段共享。
这些值显示在输入表单的下拉列表中:
在Adobe Campaign客户端控制台中,Administration > Enumerations节点用于管理明细列表。
通过enum属性,可以定义在预先知道可能值的列表时使用的固定明细列表。
enum属性引用在主元素外部的模式中填充的明细列表类的定义。
明细列表允许用户从下拉列表中选择一个值,而不是在常规输入字段中输入该值:
数据模式中明细列表声明的示例:
<enumeration name="gender" basetype="byte" default="0">
<value name="unknown" label="Not specified" value="0"/>
<value name="male" label="male" value="1"/>
<value name="female" label="female" value="2"/>
</enumeration>
通过<enumeration>
元素在主元素外部声明明细列表。
明细列表属性如下:
明细列表值在<value>
元素中声明,具有以下属性:
通过dbenum属性,可以定义一个明细列表,其属性与enum属性的属性相似。
但是,name属性不在内部存储值,它存储一个代码,使您可以扩展相关表而不修改其模式。
值通过Administration>Enumerations节点定义。
例如,此明细列表用于指定活动的性质。
下面是我们的示例模式,其中填写了属性:
<srcSchema name="recipient" namespace="cus">
<enumeration name="gender" basetype="byte">
<value name="unknown" label="Not specified" value="0"/>
<value name="male" label="male" value="1"/>
<value name="female" label="female" value="2"/>
</enumeration>
<element name="recipient">
<attribute name="email" type="string" length="80" label="Email" desc="Email of recipient"/>
<attribute name="created" type="datetime" label="Date of creation" default="GetDate()"/>
<attribute name="gender" type="byte" label="gender" enum="gender"/>
<element name="location" label="Location">
<attribute name="city" type="string" length="50" label="City" userEnum="city"/>
</element>
</element>
</srcSchema>
集合是具有相同名称和相同层次的元素的列表。
值为“true”的unboind属性允许您填充集合元素。
示例:集合元 <group>
素在模式中的定义。
<element name="group" unbound="true" label="List of groups">
<attribute name="label" type="string" label="Label"/>
</element>
对XML内容进行投影:
<group label="Group1"/>
<group label="Group2"/>
Adobe Campaign中使用XPath语言来引用属于数据模式的元素或属性。
XPath是一种语法,它允许您在XML文档的树中查找节点。
元素由其名称指定,属性由字符"@"前的名称指定。
示例:
<location>
性[1]/@label
:选择作为第一个集合元素的子项的“label” <group>
属性[@label='test1']
:选择作为元素子项的“label”属 <group>
性并包含值“test1”当路径与子元素相交时,会添加附加约束。 在这种情况下,以下表达式必须放在括号之间:
[location/@city]
[@email]
和 @ emailare等效还可以定义复杂的表达式,如以下算术运算:
为了丰富这种语言的潜力,表达式中增加了高级功能。
您可以通过Adobe Campaign客户端控制台中的任何表达式编辑器访问可用功能的列表:
示例:
计算字符串是XPath表达式,用于在与该模式相关联的表中构造表示记录的字符串。 计 算字符串主要用于图形界面中显示所选记录的标签。
计算字符串是通过数据模式主要元素下的<compute-string>
元素定义的。 expr属性包含用于计算显示的XPath表达式。
示例:计算收件人表的字符串。
<srcSchema name="recipient" namespace="nms">
<element name="recipient">
<compute-string expr="@lastName + ' ' + @firstName +' (' + @email + ')' "/>
...
</element>
</srcSchema>
收件人的计算字符串结果:Doe John(john.doe@aol.com)
如果模式不包含计算字符串,则默认情况下将使用模式的主键值填充计算字符串。