Я собираюсь создать пользовательский элемент управления 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>