powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / Помогите составить XSL
4 сообщений из 4, страница 1 из 1
Помогите составить XSL
    #35963907
eLVik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Здравствуйте. Я только начал разбираться с XSLT и хочу спросить у Вас совета

Есть следующий документ (Word ML 2003)

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<?mso-application progid="Word.Document"?>
<w:wordDocument xmlns:w="http://schemas.microsoft.com/office/word/2003/wordml" xmlns:v="urn:schemas-microsoft-com:vml" xmlns:w10="urn:schemas-microsoft-com:office:word" xmlns:sl="http://schemas.microsoft.com/schemaLibrary/2003/core" xmlns:aml="http://schemas.microsoft.com/aml/2001/core" xmlns:wx="http://schemas.microsoft.com/office/word/2003/auxHint" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:dt="uuid:C2F41010-65B3-11d1-A29F-00AA00C14882" xmlns:wsp="http://schemas.microsoft.com/office/word/2003/wordml/sp2" w:macrosPresent="no" w:embeddedObjPresent="no" w:ocxPresent="no" xml:space="preserve">
  <w:body>
      <w:p>
        <w:r>
          <w:t>HELLO</w:t>
        </w:r>
      </w:p>
  </w:body>
</w:wordDocument>

Я хочу добиться, чтобы корневой тэг был заменен на <w:document>, так как это принято в формате OpenXML

Код: plaintext
1.
2.
3.
4.
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<w:document xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main">
....
</w:document>

Для этого я создал схему XSLT-преобразования

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet 
  version="1.0" 
  xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
  xmlns:w="http://schemas.microsoft.com/office/word/2003/wordml">
  
  <xsl:template match="/">
    <xsl:element name="w:document" namespace="http://schemas.openxmlformats.org/wordprocessingml/2006/main">
      <xsl:for-each select="//*">
        <xsl:copy />
      </xsl:for-each>
    </xsl:element>
  </xsl:template>
  
</xsl:stylesheet>

Далее я использовал класс XslCompiledTransform из пространства имен System.Xml.Xsl и получил следующую ошибку

Невозможно создать объявление пространства имен xmlns:w="http://schemas.microsoft.com/office/word/2003/wordml". Префикс "w" уже сопоставлен пространству имен "http://schemas.openxmlformats.org/wordprocessingml/2006/main".

Собственно вопрос, как это можно обойти? Спасибо заранее.
...
Рейтинг: 0 / 0
Помогите составить XSL
    #35964880
Фотография Роман Дынник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
попробуй убрать это
xmlns:w="http://schemas.microsoft.com/office/word/2003/wordml"
...
Рейтинг: 0 / 0
Помогите составить XSL
    #35966364
eLVik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Роман Дынникпопробуй убрать это
xmlns:w="http://schemas.microsoft.com/office/word/2003/wordml"

Не срабатывает. Выдает ту же ошибку.
...
Рейтинг: 0 / 0
Помогите составить XSL
    #35966450
eLVik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пока ничего не выдумывается кроме

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet
  version="1.0"
  xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
  xmlns:w2003="http://schemas.microsoft.com/office/word/2003/wordml" 
  xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main">


  <xsl:output method="xml" />

  <xsl:template match="w2003:wordDocument">
    <xsl:element name="w:document">
      <xsl:apply-templates />
    </xsl:element>
  </xsl:template>

  <xsl:template match="w2003:body">
    <xsl:element name="w:body">
      <xsl:apply-templates />
    </xsl:element>
  </xsl:template>

  <xsl:template match="w2003:p">
    <xsl:element name="w:p">
      <xsl:apply-templates />
    </xsl:element>
  </xsl:template>

  <xsl:template match="w2003:r">
    <xsl:element name="w:r">
      <xsl:apply-templates />
    </xsl:element>
  </xsl:template>

  <xsl:template match="w2003:t">
    <xsl:element name="w:t">
      <xsl:apply-templates />
    </xsl:element>
  </xsl:template>
</xsl:stylesheet>
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / Помогите составить XSL
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]