Hi all
A guy on the forums posted a very small schema, in which he had promoted an element
as a distinguished field.
His schema was this:
<?xml version="1.0" encoding="utf-16" ?>
<xsd:schema xmlns:b="http://schemas.microsoft.com/BizTalk/2003" attributeFormDefault="unqualified"
elementFormDefault="qualified" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:element name="outbound_task">
<xsd:annotation>
<xsd:appinfo>
<properties xmlns="http://schemas.microsoft.com/BizTalk/2003">
<property distinguished="true"
xpath="/*[local-name()=’outbound_task’ and namespace-uri()=”]/*[local-name()=’task’
and namespace-uri()=”]/*[local-name()=’task_id’ and namespace-uri()=”]" />
</properties>
</xsd:appinfo>
</xsd:annotation>
<xsd:complexType>
<xsd:sequence>
<xsd:element name="task">
<xsd:complexType>
<xsd:sequence>
<xsd:element
minOccurs="0" name="task_id" type="xsd:decimal" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:schema>
His issue was, that when he tried using the distinguished field in an orchestration,
the task_id field just didn’t show up in intellisense. And if he just entered the
complete value in the expression shape (like this: Message.task.task_id) then he got
a compile time error.
I messed around with it a lot, trying all sorts of stuff, but ended up with a quite
simple solution: the word “task” is a reserved word. For a complete list of the reserved
words, take a look at http://msdn.microsoft.com/en-us/library/aa547020.aspx.
So, basically, renaming the “task” element to “Task” or something completely different
(but still avoiding any reserved words) will work.
Hope this helps.
—
eliasen