Генерировать динамические xmlns - PullRequest
2 голосов
/ 19 мая 2010

Я хотел бы динамически генерировать атрибуты xmlns.

Я хочу создать это в XSL:

ThisPartIsDynamic ; Assembly = ThisPartIsDynamic "> </ Общие: MainPageBase>

Как я могу это сделать в XSL?

Спасибо, Alex

Обновление

Точнее, вот что мне нужно сгенерировать. Части, которые я хочу изменить с помощью переменных, называются «THISPARTISDYNAMIC»:

<Common:MainPageBase
  xmlns:Common="clr-namespace:THISPARTISDYNAMIC;assembly=THISPARTISDYNAMIC"
  xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
  xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
  xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
  xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
  xmlns:df="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Data.DataForm.Toolkit"
  xmlns:controlsToolkit="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Toolkit"  
  xmlns:basics="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls"
  xmlns:data="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Data"  
  xmlns:uc="clr-namespace:THISPARTISDYNAMIC"
  mc:Ignorable="d" d:DesignWidth="640" d:DesignHeight="480" 
  ></Common:MainPageBase>

Есть идеи?

Ответы [ 3 ]

1 голос
/ 19 мая 2010

Вы можете динамически установить пространство имен элемента:

<param name="ns1" >http://localhost/ns1</param>
...
<xsl:element name="test" namespace="{$ns1}" >... </xsl:element>

Но это не выводит префикс пространства имен - он меняет пространство имен по умолчанию для этого элемента.

Я не думаю, что есть способ вывести префиксы с динамическим URI пространства имен. Что-то вроде: <xyz:test xmlns:xyz="{$ns1}"> выводит именно это буквально: <xyz:test xmlns:xyz="{$ns1}">

Если это действительно тот результат, который вам нужен, то я думаю, что у вас есть модифицировать сериализатор или просто произвести вывод с URI заполнителя и сделать замену текста на выходной текст XML.

[XSLT не обрабатывает синтаксис XML. Обрабатывает деревья XML. Разбор ввода и сериализация вывода находятся за пределами его области. ]

1 голос
/ 19 мая 2010
1 голос
/ 19 мая 2010

Это преобразование :

<xsl:stylesheet version="1.0"
 xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
 <xsl:output omit-xml-declaration="yes"/>

 <xsl:variable name="vDynamicPart1" select="'DynPArt1'"/>
 <xsl:variable name="vDynamicPart2" select="'DynPArt2'"/>

 <xsl:template match="/">

   <xsl:element name="Common:MainPageBase"
   namespace="clr-namespace:{$vDynamicPart1};assembly={$vDynamicPart2}"/>

 </xsl:template>
</xsl:stylesheet>

при применении к любому документу XML (не используется), дает желаемый результат .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...