Как вывести элементы xml в xslt, когда для метода вывода задан текст? - PullRequest
0 голосов
/ 18 августа 2011

Я собираюсь создать пользовательский элемент управления ASP.NET (ascx) из входного XML, используя xslt.

Поскольку существует какое-то странное участие html-дизайна, выходной файл не может быть действительным html или дажеxhtml, поэтому из ответов на мой другой вопрос мне нужно использовать метод вывода текста.Другая причина заключается в том, что когда я использую xml или html, выходные данные загромождаются атрибутами xmlns. Я не могу предотвратить , не изменив вывод в текст.

Когда выводом будет XML, я быиспользуйте такой шаблон:

<xsl:template match="TextField">
            <xsl:text>
                <![CDATA[<someInvalid><stuff><fromAgency /></somInvalid>]]>
            </xsl:text>
    <xsl:apply-templates select="./Label" />
    <asp:TextBox ID="{@id}" runat="server">
        <xsl:if test="@defaultValue">
            <xsl:attribute name="value">
                <xsl:value-of select="@defaultValue"/>
            </xsl:attribute>
        </xsl:if>
    </asp:TextBox>
            <xsl:text><![CDATA[</stuff>]]></xsl:text>
    <xsl:copy-of select="$br"/>
</xsl:template>

Теперь, когда я переключаю метод вывода на текст, в результат вообще ничего не записывается.

Очевидно, что текстовый режим просто игнорирует все xml вшаблон.Как настроить мой шаблон для вывода этих элементов, даже если для метода вывода задан текст?

Пояснение: тег <asp:TextBox> - с его атрибутами и значениями является желаемым результатом этого преобразования, но при изменениирежим вывода в текст, который ошибочно пропускается в выводе.

Обновление: вот полный ввод XML:

<?xml version="1.0" encoding="utf-8" ?>
<Form xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="XmlForm.xsd">
   <Validation enabled="false" enableValidationSummary="true" />
   <FieldSet>
      <TextField id="firstInput" css-class="textfield-css-class" />
      <TextField id="secondInput" defaultValue="Wrdlbmrpft">
         <Label translatable="true" >Label Text</Label>
      </TextField>
   </FieldSet>
</Form>

Полный желаемый вывод будет выглядеть так:

<%@ Control Language="C#" AutoEventWireup="true" Inherits="DevelopmentWeb.WebUserControl1" %>
<someInvalid><stuff><fromAgency /></somInvalid>
   <asp:TextBox runat="server" ID="firstInput" CssClass="textfield-css-class"></asp:TextBox>
</stuff>
<someInvalid><stuff><fromAgency /></somInvalid>
   <asp:Label runat="server" AssociatedControlID="secondInput">Label Text</asp:Label>
   <asp:TextBox runat="server" ID="secondInput">Wrdlbrmpft</asp:TextBox>
</stuff>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...