Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Работа с MS Office > ковычки в поле Word'а отрезают часть данных


Автор: nicotin 15.11.2010, 08:14
Работаю над автоматизацией создания ворд документа из xml
В некоторых случаях использую вордовские поля (field) для обработки и показа текста. Иногда из xml документа приходит строка, содержащая двойные кавычки. Одинарные тоже попадают, но с ними проблем нет, а вот с двойными есть. 
Если мне надо создать букмарку (их можно использовать как переменные внутри документа), то я пишу {SET varName "value"}. Потом, при вызове этой букмарки ({varName}) я получу ее значение, т.е. value
Если же в значении есть двойная кавычка, то все содержимое после нее отрезается.
Вот пример проблемы:
1. user posted image
2. user posted image
3. user posted image

На деле, мне надо использовать другое поле, но там такое же поведение в кавычками. Это поле я использовал для демонстрации проблемы.
Как мне добиться того, чтобы содержимое, какие бы в нем символы ни были, обрабатывалось полностью? 

Автор: Akina 15.11.2010, 08:20
Кавычки, которые составляют содержимое, следует удваивать. Обрамляющие - не трогай.

Автор: nicotin 15.11.2010, 08:26
Цитата(Akina @ 15.11.2010,  08:20)
Кавычки, которые составляют содержимое, следует удваивать. Обрамляющие - не трогай.

То есть вместо двойной кавычки использовать две одинарные вместе? Или две двойные вместе?
Я попробовал с двумя двойными - все равно отрезает...
Две одинарные взамен одной двойной - может это и выход. Но выглядят они немного иначе. В зависимости от шрифта различаются от двойных сильнее или слабее.. Пойдет только на крайний случай.

Автор: nicotin 15.11.2010, 09:20
не работает, может я что не так понял, или кавычки не те?
user posted image

Автор: Akina 15.11.2010, 09:32
Цитата(nicotin @  15.11.2010,  09:26 Найти цитируемый пост)
Или две двойные вместе?

Именно. 
Если не срабатывает - попробуй стандартный квотинг обратным слешем. Если и это не поможет - попробуй почитать справку по теме.

Автор: nicotin 15.11.2010, 10:09
user posted image

Остаются бекслеши, но кавычки стали пролазить. Я это пробовал, но че-то не написал на форуме. Может какой глобальный параметр управляет тем, нужно ли убирать бекслеши?

Автор: nicotin 15.11.2010, 11:25
на форуме майкрософта посоветовали вместо кавычек вставлять { QUOTE 34} - работает. Только мне не подходит :(

Автор: Akina 15.11.2010, 11:59
Мне на самом деле непонятно, почему нужно обязательно переть эти кавычки туда, где они порождают кучу геморроя. Имена букмарков вполне потерпят, если ты заменишь проблемный символ на что-то ещё.

Автор: nicotin 15.11.2010, 12:55
Приложение состоит из механизма преобразования xml в wordml. Одна часть системы трансформирует xml в wordml на основе информации и стилях из второй части - шаблона, который есть специальный вордовский документ. Так вот предпочтительно что-то менять именно в шаблоне, нежели в трансформере. Тем более не допускается какой-либо препроцессинг. Поэтому я сначала поискал способы в ворде это обойти, но видимо, буду править трансформер, чтобы кавычки не лезли из исходного xml

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)