想象一下以下架构作为输入
<xs:schema>
<xs:element name="In">
<xs:complexType>
<xs:sequence>
<xs:element name="InA">
<xs:complexType>
<xs:sequence>
<xs:element name="InA1" type="xs:string" />
<xs:element name="InA2" type="xs:string" />
<xs:element name="InA3" type="xs:string" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="InB">
<xs:complexType>
<xs:sequence>
<xs:element name="InB1" type="xs:string" />
<xs:element name="InB2" type="xs:string" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
例如
<In>
<InA>
<InA1>InA1_0</InA1>
<InA2>InA2_0</InA2>
<InA3>InA3_0</InA3>
</InA>
<InB>
<InB1>InB1_0</InB1>
<InB2>InB2_0</InB2>
</InB>
</In>
现在,我需要将其映射到另一个模式,因为一些规则是:
我想要这样做的唯一方法就是在Out元素之前做一个if,但是对于孩子Out来说,这是非常乏味和有问题的。
<xsl:if test="/In/InA/InA1 != '' and /In/InA/InB2 != '' and /In/InA/InA3 != ''">
<Out>
<xsl:if test="/In/InA/InA1 != ''">
<Out1>
<xsl:value-of select="/In/InA/InA1/text()">
</Out1>
</xsl:if>
<xsl:if test="/In/InA/InB2 != ''">
<Out2>
<xsl:value-of select="/In/InB/InB2/text()">
</Out2>
</xsl:if>
<xsl:if test="/In/InA/InA3 != ''">
<Out3>
<xsl:value-of select="/In/InA/InA3/text()">
</Out3>
</xsl:if>
</Out>
</xsl:if>
任何人都可以在一张地图中执行此操作吗?
答案 0 :(得分:0)
这是我出来的。我们的想法是在变量中执行内部映射,然后检查变量是否为空。如果不是,那么我可以映射。
Series ttt = new Series("")
{
ChartType = SeriesChartType.Line,
Color = Color.Yellow,
BorderWidth = 5,
Font = new Font(Font.OriginalFontName, 20, FontStyle.Regular),
};
ttt.Points.AddXY(0,10);
//ttt.Points.AddXY(0, -10);
this.chart1.Series.Add(ttt);
当然,这种方法必须有问题,我想其中一个就是性能。