Xml 自定义xhtml标记以减少重复块

Xml 自定义xhtml标记以减少重复块,xml,xhtml,Xml,Xhtml,我有一个xhtml文件,其中包含许多相同的块,只有一个标识符#####出现在几个地方。注意:##IDENTIFIER###是此消息块中使用的纯文本值的占位符 <message id="##IDENTIFIER##"> <div class="box"> <div class="box-header"> <div class="box-title"> <h3 cla

我有一个xhtml文件,其中包含许多相同的
块,只有一个标识符
#####
出现在几个地方。注意:
##IDENTIFIER###
是此消息块中使用的纯文本值的占位符

<message id="##IDENTIFIER##">
    <div class="box">
        <div class="box-header">
            <div class="box-title">
                <h3 class="box-title-text">Title</h3>
            </div>
            <div class="button">
                ${specialblock: "##IDENTIFIER##"}
            </div>
        </div>
        <div class="edit">
            ${##IDENTIFIER##: "data"}
        </div>
    </div>
</message>

标题
${specialblock:“##标识符##”}
${###标识符##:“数据”}
我希望能够做的是制作一个自定义标记,我可以使用它来替换上面的代码块,例如:

这可能吗?如果是这样的话,有什么好办法?我已经开始研究模式和实体引用,但我还不太了解它们,我也不确定它们是否会提供我正在寻找的行为

编辑:我也希望这可以在同一个文件中完成,但如果需要,我可以添加其他文件

我想做的是制作一个自定义标记,我可以用它来替换上面的代码块,比如:

应用以下XSLT(例如命名为
a.XSLT


对于Windows,也有很多XSLT处理器,只需谷歌一下。

###IDENTIFIER##
实际的字符串值还是某种占位符?另外,您可以使用XSLT(转换XML)吗?我只是使用
#######
作为占位符。我认为XSLT不会有问题,有什么文档可以推荐吗?看看react.js
<mymessage value="##IDENTIFIER##"/>
<?xml version="1.0" encoding="UTF-8"?>
<root>
    <message id="##IDENTIFIER003##">
        <div class="box">
            <div class="box-header">
                <div class="box-title">
                    <h3 class="box-title-text">Title</h3>
                </div>
                <div class="button">
                    ${specialblock: "##IDENTIFIER##"}
                </div>
            </div>
            <div class="edit">
                ${##IDENTIFIER##: "data"}
            </div>
        </div>
    </message>
    <message id="##IDENTIFIER001##">
        <div class="box">
            <div class="box-header">
                <div class="box-title">
                    <h3 class="box-title-text">Title</h3>
                </div>
                <div class="button">
                    ${specialblock: "##IDENTIFIER##"}
                </div>
            </div>
            <div class="edit">
                ${##IDENTIFIER##: "data"}
            </div>
        </div>
    </message>
    <message id="##IDENTIFIER002##">
        <div class="box">
            <div class="box-header">
                <div class="box-title">
                    <h3 class="box-title-text">Title</h3>
                </div>
                <div class="button">
                    ${specialblock: "##IDENTIFIER##"}
                </div>
            </div>
            <div class="edit">
                ${##IDENTIFIER##: "data"}
            </div>
        </div>
    </message>    
</root>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:output method="xml" indent="yes" encoding="utf-8" />

  <!-- identity template -->
  <xsl:template match="node()|@*">
    <xsl:copy>
      <xsl:apply-templates select="node()|@*" />
    </xsl:copy>
  </xsl:template>

  <xsl:template match="message">
    <mymessage value="{@id}" />
  </xsl:template>

</xsl:stylesheet>
<?xml version="1.0" encoding="utf-8"?>
<root>
    <mymessage value="##IDENTIFIER003##"/>
    <mymessage value="##IDENTIFIER001##"/>
    <mymessage value="##IDENTIFIER002##"/>        
</root>
xsltproc a.xslt a.xml