我需要删除生成的输出中的额外组级别。我的要求是,我需要每10个字符拆分元素<FFF>
中的数据。我的代码几乎正常工作,但它填充了额外的组级别<FinalRecord>
。这是我的XML文件:
INPUT
<RootParent>
<Data>
<DetailRecord>
<AAA>6</AAA>
<BBB>22</BBB>
<CCC>000000CC</CCC>
</DetailRecord>
<FinalRecord>
<FFF>This is only for testing. I repeat. This is only for testing</FFF>
</FinalRecord>
</Data>
</RootParent>
生成的输出
<RootParent>
<Data>
<DetailRecord>
<AAA>6</AAA>
<BBB>22</BBB>
<CCC>000000CC</CCC>
</DetailRecord>
<FinalRecord>
<FinalRecord>
<FFF>This is on</FFF>
</FinalRecord>
<FinalRecord>
<FFF>ly for tes</FFF>
</FinalRecord>
<FinalRecord>
<FFF>ting. I re</FFF>
</FinalRecord>
<FinalRecord>
<FFF>peat. This</FFF>
</FinalRecord>
<FinalRecord>
<FFF> is only f</FFF>
</FinalRecord>
<FinalRecord>
<FFF>or testing</FFF>
</FinalRecord>
<FinalRecord>
<FFF>. This is </FFF>
</FinalRecord>
<FinalRecord>
<FFF>only</FFF>
</FinalRecord>
</FinalRecord>
</Data>
</RootParent>
预期输出
<RootParent>
<Data>
<DetailRecord>
<AAA>6</AAA>
<BBB>22</BBB>
<CCC>000000CC</CCC>
</DetailRecord>
<FinalRecord>
<FFF>This is on</FFF>
</FinalRecord>
<FinalRecord>
<FFF>ly for tes</FFF>
</FinalRecord>
<FinalRecord>
<FFF>ting. I re</FFF>
</FinalRecord>
<FinalRecord>
<FFF>peat. This</FFF>
</FinalRecord>
<FinalRecord>
<FFF> is only f</FFF>
</FinalRecord>
<FinalRecord>
<FFF>or testing</FFF>
</FinalRecord>
<FinalRecord>
<FFF>. This is </FFF>
</FinalRecord>
<FinalRecord>
<FFF>only</FFF>
</FinalRecord>
</Data>
</RootParent>
我的XSLT代码
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml"/>
<xsl:strip-space elements="*"/>
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="FFF">
<xsl:analyze-string regex=".{{10}}" select=".">
<xsl:matching-substring>
<FinalRecord>
<FFF>
<xsl:value-of select="."/>
</FFF>
</FinalRecord>
</xsl:matching-substring>
<xsl:non-matching-substring>
<FinalRecord>
<FFF>
<xsl:value-of select="."/>
</FFF>
</FinalRecord>
</xsl:non-matching-substring>
</xsl:analyze-string>
</xsl:template>
</xsl:stylesheet>
我的代码中是否有错误或缺失?我被困住了,不知道该怎么做。我尝试在<xsl:template match="FinalRecord"/>
之后插入<xsl:template match="@*|node()">
以删除XML文件中的记录<FinalRecord>
,但它不起作用。我正在使用XSLT v2.0。
非常感谢您的反馈。
谢谢。
答案 0 :(得分:3)
注意:强>
元素QVariant MyModel::data(const QModelIndex &item, int role) const
{
if (role == Qt::DisplayRole)
{
return "This is view item text";
}
else if (role == Qt::ToolTipRole)
{
// Here you should decide what to return.
if (someCondition)
return "This is the actual tool tip";
else
return "Something else";
}
return QAbstractItemModel::data(item, role);
}
由&#34; identity-copy-template&#34;处理。因为没有其他匹配规则。
我尝试在
FinalRecord
之后将<xsl:template match="FinalRecord"/>
插入删除 XML文件中的记录,但它没有用。
删除有点不对劲。您需要处理元素BUT而不再创建相同的元素。
见:
<xsl:template match="@*|node()">