Преобразует Visual FoxPro курсор в XML.

CURSORTOXML(nWorkArea | cTableAlias, cOutput [, nOutputFormat 
[, nFlags [, nRecords [, cSchemaName [, cSchemaLocation [, cNameSpace ]]]]]])

Параметры

nWorkArea

Указывает рабочую область таблицы, из которой создается XML строка.

Если вы укажите 0 или не укажите ничего, Visual FoxPro использует текущую рабочую область.

cTableAlias

Указывает псевдоимя (alias) таблицы, из которой создается XML строка.

cOutput

Указывает путь и имя файла или переменную памяти, в которые будет послан результат преобразования.

Если nFlags установлен в 0 (по умолчанию), то результат преобразования - XML строка - будет послан в переменную памяти. Если переменная памяти не существует к этому моменту, то она будет создана.

Если nFlags установлен в 512 для посылки результата преобразования в файл, а файл еще не существует, то он будет создан. Если же файл уже существует, то его содержимое будет переписано. При этом учитывается установка, определенная SET SAFETY.

nOutputFormat

Определяет формат вывода XML строки. В приведенной ниже таблице перечислены значения для nOutputFormat.

nOuputFormat Описание

1 – ELEMENTS

(По умолчанию) XML на базе элементов

2 – ATTRIBUTES

XML на базе аттрибутов

3 – RAW

Общий, XML на базе аттрибутов

nFlags

Определяет форматирование, произведенного в результате преобразования, XML и его назначение. В приведенной ниже таблице перечислены значения для nFlags.

nFlags Bit Описание вывода

0

0000

(По умолчанию) Производит XML в формате UTF-8.

Эта установка создает переменную памяти, если она указана в cOutput, но не существует и посылает в нее сформированный XML.

XML декларация в этом случае не содержит аттрибута кодировки Encoding=; то есть, аттрибут кодировки не устанавливается в UTF-8.

1

0001

Производит неформатированный XML в виде длинной строки.

2

0010

Для пустых элементов вставляет открывающий и закрывающий тэги, например, <cc04><cc04/>.

4

0100

Сохраняет пустые пространства (пробелы, в том числе и хвостовые) в полях.

8

1000

Разрешает деление мемо полей на строки в секциях CDATA.

16

10000

Кодировка вывода. Вывод кодируется по кодовой странице курсора.

Для гарании аккуратной трансляции символов, кодовая страница Visual FoxPro, используемая по умолчанию должна соответствовать кодовой странице курсора. Вы можете обеспечить это поведение установкой для символьных и мемо полей аттрибута NOCPTRAN ( character binary/memo binary).

При использовании этого значения с таблицами, использующими любые кодовые страницы, аттрибут кодировки в XML устанавливается в пустую строку (""). Для изменения кодировки в корректный аттрибут используйте функцию STRTRAN().

Например, для кодовой страницы с номером 936, выполните приведенное ниже для готовой XML строки:

  CopyCode image Скопировать код
strxml=STRTRAN(strxml, 'encoding=""', 'encoding="gb2312"'

32

100000

Кодировка вывода.

512

1000000000

Результат преобразования посылается в файл, указанный в параметре cOutput.

Если файл еще не существует, то он будет создан. Если файл уже существует, то его содержимое будет переписано новым. Принимается во внимание установка, определенная SET SAFETY.

4096

1000000000000

Запрещает кодирование base64.

CURSORTOXML( ) экспортирует поля Memo (Binary) как xsd:base64binary, если вы не используете значение флага nFlags равное 4096. В Visual FoxPro, кодировка base64 является средством до кодирования только бинарных данных.

32768

none

Указывает, что должна быть использована кодовая страница.

В приведенной ниже таблице описывается, как записывается аттрибут кодировки, когда кодировка вывода устанавливается по умолчанию в кодовую страницу курсора или таблицы.

ЗамечаниеЗамечание

Флаги кодировки устанавливаются комбинацией битов 4 и 5 (0010000).

Флаг кодировки Биты 4 и 5 Описание

+0

00

(По умолчанию) Windows-1252.

+16

01

Устанавливает аттрибут кодировки вывода в кодовую страницу курсора.

+32

10

Устанавливает аттрибут кодировки вывода в UTF-8 без символьной трансляции.

+48

11

Устанавливает аттрибут кодировки вывода в UTF-8 и транслирует символьные данные в UTF-8.

В приведенной ниже таблице перечислены Windows-совместимые общие кодовые страницы.

Кодовая страница Платформа Аттрибут кодировки в XML-декларации Комментарии

437

MS-DOS, US

ibm437

 

850

MS-DOS, International

ibm850

 

865

MS-DOS, Nordic

Пустная строка ("")

866

MS-DOS, Russian

cp866

 

932

Windows, Japanese

shift-jis

 

936

Simplified Chinese

gb2312

 

949

Windows, Korean

iso-2022-kr

или:

ks_c_5601-1987

950

Windows, Traditional Chinese (Taiwan)

big5

 

1250

Windows, East European

Windows-1250

Учитывайте регистр.

1251

Windows, Russian

Windows-1251

 

1252

Windows, U.S., West European

Windows-1252

 

1253

Windows, Greek

Windows-1253

 

1254

Windows, Turkish

Windows-1254

 

1255

Windows, Hebrew

Windows-1255

 

1256

Windows, Arabic

Windows-1256

 

ЗамечаниеЗамечание

Visual FoxPro использует кодировку Windows-1252 в качестве кодировки по умолчанию. Вы можете указать, что аттрибут кодировки будет установлен в соответствие с кодовой страницей, такой как Big5 (кодовая страница 950), при использовании наборов двухбайтных символов (DBCS) для языков DBCS, для которых Visual FoxPro поддерживает кодовые страницы.

При использовании Windows-1252 и DBCS не требуется дополнительной трансляции символов для корректного отображения в Internet Explorer.

Однако, для того, чтобы сделать XML более отвечающий Web браузерам, которые могут интерпретировать UTF-8, вы можете дополнительно установить аттрибут кодировки в UTF-8 вместо Windows-1252. Результат преобразования будет подвергнут трансляции в UTF-8 только тогда, когда вы установите nFlags в значение 48 (указав аттрибут кодировки, как UTF-8, и произведя трансляцию символов в формат UTF-8). Это требуется только тогда, когда данные действительно содержат двухбайтные символы. У вам нет необходимости использовать трансляцию символов, STRCONV ( ), например, для случая, когда вы выводите в XML только символы латинского алфавита.

nRecords

Указывает число записей, преобразуемых в XML и по умолчанию имеет значение, равное 0.

Если nRecords равно нулю, то преобразованию подлежат все записи таблицы или курсора. Если же nRecords указан большим, чем число записей, имеющихся в таблце, то только имеющиеся записи и будут посланы в вывод.

cSchemaName

Указывает имя и местонахождение схемы информации о данных в cOutput, например "MySchema.xsd". Если вы не указали расширения для файла внешней схемы, то создается файл с расширением .xsd.

В приведенной ниже таблице перечислены значения для cSchemaName.

cSchemaName Описание

cSchemaName

Указывает имя и путь внешнего файла для схемы (относящейся к области корневого элемента XML).

ЗамечаниеЗамечание

Если cSchemaName содержит имя файла, а cSchemaLocation не предоставлена или является пустой, содержимое cSchemaName записывается в аттрибут xsi:schemaLocation или xsi:noNamespaceSchemaLocation в XML документе.

В приведенном ниже примере, Visual FoxPro генерирует XML файл общего вида с именем MyXMLFile.xml из файла Labels.dbf под псевдоменем "Labels" и файл схемы с названием MySchema, помещаемым в один и тот же каталог.

  CopyCode image Скопировать код
CURSORTOXML("LABELS", "myXMLFile.xml", 1, 512, 0, "mySchema.xsd")

Если cSchemaName включает в себя URI, то схема записывает в текущий каталог и должна быть перегружена на сервер, который должен быть доступен браузеру или парсеру. Внешняя схема всегда записывается в то же место, что и файл XML.

"1"

Определяет, что будет произведена внутренняя (вложенная) схема. Например, приведенный ниже пример производит внутренюю схему:

  CopyCode imageСкопировать код
CURSORTOXML("LABELS", "myXMLFile.xml", 1, 512, 0, "1")

""

Определяет, что в результате преобразования не будет сгенерирована схема.

cSchemaLocation

Определяет необязательное местонахождение, в котором приложение, читающее данные из XML, должно искать файл схемы.

ЗамечаниеЗамечание

Используйте этот параметр только в случае, когда вы развертываете вашу схему в месте, отличающемся от места, в котором расположены данные XML.

Содержание cSchemaLocation записывается в аттрибут xsi:schemaLocation или xsi:noNamespaceSchemaLocation, произведенного в результате преобразования, XML. Параметр cschemaLocation может представлять адрес HTTP или другой URI. Вам необходимо скопировать файл схемы в место, которое вы указали в cSchemaLocation.

В приведенное ниже примере прозводится преобразование в XML данные:

  CopyCode imageСкопировать код
CURSORTOXML("LABELS", "myXMLFile.xml", 1, 512, 0, ;
   "mySchema.xsd", "http://www.microsoft.com/mySchema.xsd")

содержащие приведенный ниже аттрибут:

  CopyCode imageСкопировать код
   xsi:noNamespaceSchemaLocation=" http://www.microsoft.com/mySchema.xsd"

Передача значения параметру cSchemaLocation в случае, когда cSchemaName незаполнено, вызовет запись этого же аттрибута в XML данные. Это дает вам возможность указать существующую схему без ее регенерации каждой раз, когда вызывается функция CURSORTOXML( ).

cNamespace

Указывает пространство имен XML или производимой схемы и по умолчанию устанавливается в пустую строку ("").

Указание значения для cNameSpace устанавливает аттрибут targetNamespace в это же значение и добавляет в схему аттрибут elementFormDefault="qualified".

Если вы не указали значения для cNamespace а схема является внешней, то декларация пространства имен не записывается в схему. Если вы не указали cNamespace, а схема является вложенной, то аттрибут targetNamespace схемы устанавливается в пустую строку ("").

Expand imageВозвращаемое значение

Expand imageПримечания

Expand imageСмотри также