模式结构

<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文档必须包含具有​name​和​namespace​属性的​<srcschema>​根元素,以填充架构名称及其命名空间。

<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:日期+时间(不含时区数据)。

  • 时间跨度:持续时间。示例:资历。

  • memo:长文本字段(多行)。示例:描述、评论等。

  • uuid:用于支持GUID的“uniqueidentifier”字段(仅在Microsoft SQL Server中受支持)。

    注意

    要在Microsoft SQL Server以外的引擎中包含​uuid​字段,必须添加并填写“newuuid()”函数及其默认值。

以下是我们输入类型的示例架构:

<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/DBMS数据类型

下表列出了Adobe Campaign为不同数据库管理系统生成的数据类型的映射。

Adobe Campaign
PosgreSQL
Oracle
Teradata
DB2
MS SQL
字符串
VARCHAR(255)
VARCHAR2(如果unicode为NVARCHAR2)
VARCHAR(如果为Unicode,则为VARCHAR字符集UNICODE)
VARCHAR
VARCHAR(如果为unicode,则为NVARCHAR)
布尔值
SMALLINT
NUMBER(3)
NUMERIC(3)
SMALLINT
TINYINT
字节
SMALLINT
NUMBER(3)
NUMERIC(3)
SMALLINT
TINYINT

SMALLINT
NUMBER(5)
SMALLINT
SMALLINT
SMALLINT
Double
双精度
FLOAT
FLOAT
DOUBLE
FLOAT

INTEGER
NUMBER(10)
INTEGER
INTEGER
INT
Int64
BIGINT
NUMBER(20)
NUMERIC(20)
BIGINT
BIGINT
日期
日期
日期
TIMESTAMP
日期
DATETIME
时间
TIME
FLOAT
TIME
TIME
FLOAT
Datetime
TIMESTAMPZ
日期
TIMESTAMP
TIMESTAMP
MS SQL < 2008:DATETIME
MS SQL >= 2012:DATETIMEOFFSET
Datetimenotz
TIMESTAMPZ
日期
TIMESTAMP
TIMESTAMP
MS SQL < 2008:DATETIME
MS SQL >= 2012:DATETIME2
时间跨度
双精度
FLOAT
FLOAT
DOUBLE
FLOAT
Memo
文本
CLOB(如果为Unicode,则为NCLOB)
CLOB(如果为Unicode,则为CLOB字符集UNICODE)
CLOB(6M)
TEXT(如果为Unicode,则为NTEXT)
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语言兼容的表达式。 有关更多信息,请参阅使用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>​元素在主元素外部声明。

枚举属性如下所示:

  • baseType:与值关联的数据类型,
  • 标签:列举的说明,
  • 名称:枚举的名称,
  • 默认:枚举的默认值。

枚举值在​<value>​元素中声明,并具有以下属性:

  • 名称:内部存储的值的名称,
  • 标签:标签。

dbenum枚举

  • 通过​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”的​unbound​属性可填充集合元素。

示例:架构中集 <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"/>

使用XPath引用

Adobe Campaign中使用XPath语言来引用属于数据模式的元素或属性。

XPath是一种语法,用于在XML文档的树中查找节点。

元素由其名称指定,属性由名称前面的字符“@”指定。

示例:

  • @email:选择电子邮件,
  • location/@city:选择元素下的“city”属 <location>
  • …/@email:从当前元素的父元素中选择电子邮件地址
  • 群组[1]/@label:选择作为第一个收集元素的子项的“label” <group> 属性
  • 群组[@label='test1']:选择作为元素子项的“label”属 <group> 性,并包含值“test1”
注意

当路径穿过子元素时,将添加附加约束。 在这种情况下,以下表达式必须置于括号之间:

  • location/@ city无效;请使用 [location/@city]
  • [@email] 和@ 电子邮 件等效项

也可以定义复杂的表达式,例如以下算术运算:

  • @gender+1:向genderattribute的内容中添加 ​1,
  • @email + '('+@created+')':通过获取添加到创建日期(在圆括号之间)的电子邮件地址值来构建字符串(对于字符串类型,将常量加引号)。

在表达式中添加了高级函数,以丰富此语言的潜力。

您可以通过Adobe Campaign客户端控制台中的任何表达式编辑器访问可用函数列表:

示例:

  • GetDate():返回当前日期
  • Year(@created):返回“已创建”属性中包含的日期年份。
  • GetEmailDomain(@email):返回电子邮件地址的域。

通过计算字符串生成字符串

计算字符串​是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)

注意

如果架构不包含计算字符串,则默认情况下会使用架构主键的值填充计算字符串。

在此页面上