Гость
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / Помогите составить XSL / 4 сообщений из 4, страница 1 из 1
30.04.2009, 17:06
    #35963907
eLVik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите составить XSL
Здравствуйте. Я только начал разбираться с 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
01.05.2009, 23:58
    #35964880
Роман Дынник
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите составить XSL
попробуй убрать это
xmlns:w="http://schemas.microsoft.com/office/word/2003/wordml"
...
Рейтинг: 0 / 0
04.05.2009, 10:11
    #35966364
eLVik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите составить XSL
Роман Дынникпопробуй убрать это
xmlns:w="http://schemas.microsoft.com/office/word/2003/wordml"

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

Код: 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
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / Помогите составить XSL / 4 сообщений из 4, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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