我有以下 XML
User entered text : Normal **Bold** *Italic*
u̲n̲d̲e̲r̲l̲i̲n̲e̲
***BoldItalic*** ***B̲o̲l̲d̲I̲t̲a̲l̲i̲c̲U̲n̲d̲e̲r̲l̲i̲n̲e̲***
生成的 XHTML 字符串存储在数据库表中。
<QuestionText xml:space="preserve">
<p>Normal
<b>Bold </b>
<i>Italic </i>
<u>Underline </u>
<b>Bold <i>BoldItalic </i>Bold </b>
<b><i>BoldItalic </i></b>
<b><i><u>BoldItalicUnderline</u></i></b>
</p>
<p/>
<p/>
<p/>
</QuestionText>
我需要转换为 .Net X(A)ML 如下
<Section>
<Paragraph>
<Span Text="Nornal " />
<Span FontWeight="Bold" Text="Bold " />
<Span FontStyle="Italic" Text="Italic " />
<Span Text="Underline " UnderlineDecoration="Line" />
<Span FontWeight="Bold" Text="Bold " />
<Span FontStyle="Italic" FontWeight="Bold" Text="BoldItalic " />
<Span FontWeight="Bold" Text="Bold " />
<Span FontStyle="Italic" FontWeight="Bold" Text="BoldItalic " />
<Span FontStyle="Italic" FontWeight="Bold" Text="BoldItalicUnderline" UnderlineDecoration="Line" />
</Paragraph>
<Paragraph/>
<Paragraph/>
<Paragraph/>
</Section>
我尝试使用这个 XSLT 没有运气
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:msxsl="urn:schemas-microsoft-com:xslt">
<xsl:output method="xml" indent="yes"/>
<xsl:template match="QuestionText">
<Section>
<xsl:apply-templates/>
</Section>
</xsl:template>
<xsl:template match="b|i|u|p/text()" >
<span>
<xsl:attribute name="Text">
<xsl:value-of select="current()"/>
</xsl:attribute>
<xsl:attribute name="name">
<xsl:value-of select="name()"/>
</xsl:attribute>
<xsl:attribute name="parent">
<xsl:value-of select="name(..)"/>
</xsl:attribute>
<xsl:if test=".=i">
<xsl:attribute name="FontStyle">italic</xsl:attribute>
</xsl:if>
<xsl:if test=".=b">
<xsl:attribute name="FontWeight">bold</xsl:attribute>
</xsl:if>
<xsl:if test=".=u">
<xsl:attribute name="UnderlineDecoration">line</xsl:attribute>
</xsl:if>
</span>
<xsl:apply-templates/>
</xsl:template>
<xsl:template match="p">
<Paragraph>
<xsl:apply-templates/>
</Paragraph>
</xsl:template>
</xsl:stylesheet>
非常感谢有关 XSLT 的任何帮助。