我有一个像这样的xml,
<doc>
<p>Biological<sub>89</sub> bases<sub>4456</sub> for<sub>8910</sub> sexual<sub>4456</sub>
differences<sub>8910</sub> in<sub>4456</sub> the brain exist in a wide range of
vertebrate species, including chickens<sub>8910</sub> Recently<sub>8910</sub> the
dogma<sub>8910</sub> of<sub>4456</sub> hormonal dependence for the sexual
differentiation of the brain has been challenged.</p>
</doc>
正如您所看到的,<sub>
节点中包含text()
个节点和<p>
节点。每个<sub>
节点都有一个文本节点,以空格开头。 (例如:<sub>89</sub> bases
:此前&#39; base&#39;文本出现存在空格。)我需要用节点替换这些特定空格。
所以预期的输出应该是这样的,
<doc>
<p>Biological<sub>89</sub><s/>bases<sub>4456</sub><s/>for<sub>8910</sub><s/>sexual<sub>4456</sub>
<s/>differences<sub>8910</sub><s/>in<sub>4456</sub><s/>the brain exist in a wide range of
vertebrate species, including chickens<sub>8910</sub><s/>Recently<sub>8910</sub><s/>the
dogma<sub>8910</sub><s/>of<sub>4456</sub><s/>hormonal dependence for the sexual
differentiation of the brain has been challenged.</p>
</doc>
为此我可以使用这样的正则表达式,
<xsl:template match="p/text()">
<xsl:analyze-string select="." regex="( )">
<xsl:matching-substring>
<xsl:choose>
<xsl:when test="regex-group(1)">
<s/>
</xsl:when>
</xsl:choose>
</xsl:matching-substring>
<xsl:non-matching-substring>
<xsl:value-of select="."/>
</xsl:non-matching-substring>
</xsl:analyze-string>
</xsl:template>
但是这会将<s/>
个节点添加到text()节点中的每个空格。但我只需要在特定空间添加节点。
任何人都可以建议我一个方法我该怎么做..
答案 0 :(得分:2)
如果您只想匹配以空格开头且前面有var pricesTable = $('#pricesTable').DataTable({
data: viewModel.product.PriceItems,
columns: [{
data: 'Id',
visible: false
}, {
data: 'Name'
}, {
data: 'Value'
}, {
data: 'CurrencySymbol'
}, {
data: 'UnitName'
}],
sort: false,
processing: false,
serverSide: false,
deferLoading: 0,
info: false,
filter: false,
lengthChange: false,
fnInitComplete: function (oSettings, json) {
$('#pricesTable tbody tr:eq(0)').click();
}
});
元素的文本节点,则可以将条件放在模板匹配中
var viewModel = new ProductFormViewModel(@Html.Raw(Json.Encode(Model)));
如果你只想删除字符串开头的空格,那么就可以进行简单的替换。
sub
试试这个XSLT
<xsl:template match="p/text()[substring(., 1, 1) = ' '][preceding-sibling::node()[1][self::sub]]">
答案 1 :(得分:1)
只需像sizeof(a)
那样更改正则表达式:它只匹配文本部分开头的空格。
使用此XSL剪切:
a
以下是我获得的结果:
^( )