AllowNull (XmlDoc property): Difference between revisions

From m204wiki
Jump to navigation Jump to search
m (1 revision)
m (1 revision)
Line 1: Line 1:
{{Template:XmlDoc:AllowNull subtitle}}
{{Template:XmlDoc:AllowNull subtitle}}


This property indicates whether or not the method object XmlDoc allows
This property indicates whether or not the method object <var>XmlDoc</var> allows
the deserialization of an XML document that contains nodes
the deserialization of an XML document that contains nodes
that have null characters (U+0000) in their values.
that have null characters (U+0000) in their values.
Line 9: Line 9:


For example, the following Element node is acceptable for deserialization
For example, the following Element node is acceptable for deserialization
into an XmlDoc (using the LoadXml method, for example) only if AllowNull
into an <var>XmlDoc</var> (using the LoadXml method, for example) only if <var>AllowNull</var>
is <tt>True</tt>:
is <tt>True</tt>:
<p class="code"><a>Element contains null: &amp;#0;</a>
<p class="code"><a>Element contains null: &amp;#0;</a>
</p>
</p>


If AllowNull=True, null characters are also allowed for "direct setting"
If <var>AllowNull</var>=True, null characters are also allowed for "direct setting"
of a node's value using one of the many Add or Insert methods.
of a node's value using one of the many Add or Insert methods.
For example:
For example:
Line 20: Line 20:
</p>
</p>


The default value of AllowNull is <tt>False</tt>.
The default value of <var>AllowNull</var> is <tt>False</tt>.


AllowNull is new as of version 7.6 of the ''Sirius Mods''.
<var>AllowNull</var> is new as of version 7.6 of the ''Sirius Mods''.
==Syntax==
==Syntax==
{{Template:XmlDoc:AllowNull syntax}}
{{Template:XmlDoc:AllowNull syntax}}
Line 28: Line 28:
<table class="syntaxTable">
<table class="syntaxTable">
<tr><th>%bool</th>
<tr><th>%bool</th>
<td>The Boolean enumeration value of <i>doc</i>'s AllowNull property. For more information about these enumerations, see [[Using Boolean enumerations]]. </td></tr>
<td>The Boolean enumeration value of <i>doc</i>'s <var>AllowNull</var> property. For more information about these enumerations, see [[Using Boolean enumerations]]. </td></tr>
<tr><th>doc</th>
<tr><th>doc</th>
<td>An XmlDoc object expression.</td></tr>
<td>An <var>XmlDoc</var> object expression.</td></tr>
</table>
</table>


==Usage notes==
==Usage notes==
<ul>
<ul>
<li>Nodes that are added to an XmlDoc that has <tt>AllowNull=True</tt>
<li>Nodes that are added to an <var>XmlDoc</var> that has <tt><var>AllowNull</var>=True</tt>
may not then be the source node in a subtree copy
may not then be the source node in a subtree copy
(AddSubtree or InsertSubtreeBefore) to a target
(AddSubtree or InsertSubtreeBefore) to a target
XmlDoc that has <tt>AllowNull=False</tt>.
<var>XmlDoc</var> that has <tt><var>AllowNull</var>=False</tt>.
<li>All Unicode characters except null can always be stored
<li>All <var>Unicode</var> characters except null can always be stored
in an XmlDoc, so setting AllowNull to <tt>True</tt> means ''all''
in an <var>XmlDoc</var>, so setting <var>AllowNull</var> to <tt>True</tt> means ''all''
Unicode characters can be stored.
<var>Unicode</var> characters can be stored.
If you were using the
If you were using the
now obsolete <tt>InvalidChar=Allow</tt> setting to allow null
now obsolete <tt>InvalidChar=Allow</tt> setting to allow null
characters in an XmlDoc, you can use <tt>AllowNull=True</tt> instead.
characters in an <var>XmlDoc</var>, you can use <tt><var>AllowNull</var>=True</tt> instead.
<li>Deserialization of Unicode characters that do not
<li>Deserialization of <var>Unicode</var> characters that do not
translate to EBCDIC is not allowed unless the AllowUntranslatable
translate to EBCDIC is not allowed unless the AllowUntranslatable
deserialization option (described on [[??]] reftxt=* refid=allunt.) is used.
deserialization option (described on [[??]] reftxt=* refid=allunt.) is used.
<li>When providing EBCDIC characters to be stored in
<li>When providing EBCDIC characters to be stored in
an XmlDoc, those EBCDIC characters must be translatable to
an <var>XmlDoc</var>, those EBCDIC characters must be translatable to
Unicode.
<var>Unicode</var>.
If you have EBCDIC strings that may not be translatable, you
If you have EBCDIC strings that may not be translatable, you
must handle those before passing them to an XmlDoc update operation.
must handle those before passing them to an <var>XmlDoc</var> update operation.
For example, you may be able to use the <tt>Untranslatable</tt>
For example, you may be able to use the <tt>Untranslatable</tt>
argument of the EbcdicToUnicode function ([[??]] refid=fue2u.).
argument of the EbcdicTo<var>Unicode</var> function ([[??]] refid=fue2u.).
<li>A null character in an XmlDoc is serialized
<li>A null character in an <var>XmlDoc</var> is serialized
as an XML hexadecimal character reference: <tt>&amp;#x0;</tt>.
as an XML hexadecimal character reference: <tt>&amp;#x0;</tt>.
</ul>
</ul>
Line 62: Line 62:
In the following request, an Ebcdic X'FF' character requires a replacement
In the following request, an Ebcdic X'FF' character requires a replacement
to avoid request cancellation,
to avoid request cancellation,
but setting AllowNull to <tt>True</tt> lets a null be added to the XmlDoc.
but setting <var>AllowNull</var> to <tt>True</tt> lets a null be added to the <var>XmlDoc</var>.
<p class="code">Begin
<p class="code">Begin
%d is object Xmldoc auto new
%d is object Xmldoc auto new
Line 74: Line 74:
%n1 = %d:SelectSingleNode('zen')
%n1 = %d:SelectSingleNode('zen')
%txt = 'substitute character is ' With $X2C('FF')
%txt = 'substitute character is ' With $X2C('FF')
%uni = %txt:EbcdicToUnicode(untranslatable='?')
%uni = %txt:EbcdicTo<var>Unicode</var>(untranslatable='?')
%n2 = %n1:AddComment(%uni)
%n2 = %n1:AddComment(%uni)
printText {~} = {%n2:value}
printText {~} = {%n2:value}

Revision as of 17:46, 25 January 2011

Allow null characters in node values? (XmlDoc class)


This property indicates whether or not the method object XmlDoc allows the deserialization of an XML document that contains nodes that have null characters (U+0000) in their values. A Boolean value of True allows such deserializations. The default value, False, cancels the request if such a deserialization is attempted.

For example, the following Element node is acceptable for deserialization into an XmlDoc (using the LoadXml method, for example) only if AllowNull is True:

<a>Element contains null: &#0;</a>

If AllowNull=True, null characters are also allowed for "direct setting" of a node's value using one of the many Add or Insert methods. For example:

%nod:AddElement('a', 'Element contains null:' With $X2C('00'))

The default value of AllowNull is False.

AllowNull is new as of version 7.6 of the Sirius Mods.

Syntax

%currentBoolean = doc:AllowNull doc:AllowNull = newBoolean

Syntax terms

%bool The Boolean enumeration value of doc's AllowNull property. For more information about these enumerations, see Using Boolean enumerations.
doc An XmlDoc object expression.

Usage notes

  • Nodes that are added to an XmlDoc that has AllowNull=True may not then be the source node in a subtree copy (AddSubtree or InsertSubtreeBefore) to a target XmlDoc that has AllowNull=False.
  • All Unicode characters except null can always be stored in an XmlDoc, so setting AllowNull to True means all Unicode characters can be stored. If you were using the now obsolete InvalidChar=Allow setting to allow null characters in an XmlDoc, you can use AllowNull=True instead.
  • Deserialization of Unicode characters that do not translate to EBCDIC is not allowed unless the AllowUntranslatable deserialization option (described on ?? reftxt=* refid=allunt.) is used.
  • When providing EBCDIC characters to be stored in an XmlDoc, those EBCDIC characters must be translatable to Unicode. If you have EBCDIC strings that may not be translatable, you must handle those before passing them to an XmlDoc update operation. For example, you may be able to use the Untranslatable argument of the EbcdicToUnicode function (?? refid=fue2u.).
  • A null character in an XmlDoc is serialized as an XML hexadecimal character reference: &#x0;.

Examples

In the following request, an Ebcdic X'FF' character requires a replacement to avoid request cancellation, but setting AllowNull to True lets a null be added to the XmlDoc.

Begin %d is object Xmldoc auto new %n1 is object xmlnode %n2 is object xmlnode %n3 is object xmlnode %txt is string len 32 %uni is unicode %d:LoadXml('<zen>The Buddha dog says</zen>') %n1 = %d:SelectSingleNode('zen') %txt = 'substitute character is ' With $X2C('FF') %uni = %txt:EbcdicToUnicode(untranslatable='?') %n2 = %n1:AddComment(%uni) printText {~} = {%n2:value} %d:allownull = true %n3 = %n1:AddElement('a', 'nothingness: ' With $X2C('00')) %d:print end

The result is:

%n2:value = substitute character is ? <zen> The Buddha dog says <a>nothingness: &#x0;</a> </zen>

Request-Cancellation Errors (for set method)

  • %bool is an invalid value.

See also