我有一個從XML創建C#類的XSLT。我正在使用從XML生成C#代碼:如何輸出'<' and '>'?
<xsl:output method="text"/>
創建一個文本文件。基本上我從http://docstore.mik.ua/orelly/xml/jxslt/ch08_05.htm獲取代碼並將其修改爲輸出C#代碼。
但現在我需要輸出類似
class PersonValidator : AbstractValidator<Person>
{
public PersonValidator()
{
RuleFor(obj => obj.LastName).NotEmpty();
...
}
}
...但只要我想輸出「<」或「>」我得到「& LT;」和'& gt;'。
有沒有簡單的方法來完成這個?
編輯:
這裏是我當前的XSLT(中CDATA不工作!):
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="text"/>
<xsl:variable name="className" select="/Class/@Name"/>
<xsl:variable name="entityId" select="(//Property)[1]/@Name"/>
<xsl:template match="/Class">using System;
using System.Linq;
using Core.Common.Core;
using FluentValidation;
using System.Collections.Generic;
namespace PersonDosimetry.Client.Entities.Constants
{
public class <xsl:value-of select="$className"/>
<xsl:text> : ObjectBase</xsl:text>
{
<xsl:apply-templates select="Property" mode="generateField"/>
<xsl:text>
#region Business-mapped Properties
</xsl:text>
<xsl:apply-templates select="Property" mode="generateProperty"/>
#endregion
#region Validation
class <xsl:value-of select="$className"/>Validator : AbstractValidator<![CDATA[<]]><xsl:value-of select="$className"/><![CDATA[>]]>
{
public <xsl:value-of select="$className"/>Validator()
{
//RuleFor(obj =<![CDATA[>]]> obj.LastName).NotEmpty();
}
}
protected override IValidator GetValidator()
{
return new <xsl:value-of select="$className"/>Validator();
}
#endregion
}
}
</xsl:template>
<!--
*****************************************************************
** Generate a private field declaration.
**************************************************************-->
<xsl:template match="Property" mode="generateField"><xsl:text> </xsl:text>
<xsl:value-of select="@Type"/>
<xsl:text> _</xsl:text>
<xsl:value-of select="@Name"/>;
</xsl:template>
<!--
*****************************************************************
** Generate a "get" method for a property.
**************************************************************-->
<xsl:template match="Property" mode="generateProperty">
public <xsl:value-of select="@Type"/><xsl:text> </xsl:text><xsl:value-of select="@Name"/>
{
get { return _<xsl:value-of select="@Name"/>; }
set
{
if (_<xsl:value-of select="@Name"/> != value)
{
_<xsl:value-of select="@Name"/> = value;
OnPropertyChanged();
}
}
}
</xsl:template>
</xsl:stylesheet>
我的示例XML:
<?xml version="1.0"?>
<Class Name="Person">
<Property Name="PersonId" Type="Int32" />
<Property Name="FirstNames" Type="String" />
<Property Name="LastName" Type="String" />
<Property Name="GenderTypeId" Type="Int32" />
<Property Name="BirthDate" Type="DateTime" />
<Property Name="InsuranceNumber" Type="String" />
<Property Name="Country" Type="String" />
<Property Name="Beruf" Type="String" />
</Class>
[CDATA](http://en.wikipedia.org/wiki/CDATA)可能會可能工作最 –
你能向我們展示您當前正試圖輸出'<' or '>'的XSLT代碼?謝謝! –
是的,請向我們展示您的XSLT並告訴我們您使用的是哪種XSLT處理器。如果您使用'xsl:output method =「text」',那麼輸出'<' and '>'應該很容易,除非您使用的是不合標準的XSLT處理器。 – JLRishe