XSLT将递增的值附加到现有属性值

XSLT将递增的值附加到现有属性值,xslt,Xslt,对于我的输入XML,我已经编写了XSLT,但是我无法使XSLT正确地生成。请帮忙 XML输入: 注意:如果我从XSL中删除,那么语法是正确的,但是我将无法生成book1book2等属性值 请帮忙 添加了:是必需的元素。它与输出中需要的任何其他XML元素(如)一样。它不是一个仅用于保存属性id的元素。很抱歉,如果对此有混淆 在此处添加解决方案,从获得的答案中总结: <?xml version="1.0" encoding="UTF-8"?> <newbooks> &l

对于我的输入XML,我已经编写了XSLT,但是我无法使XSLT正确地生成
。请帮忙

XML输入:

注意:如果我从XSL中删除
,那么语法是正确的,但是我将无法生成
book1
book2
属性值

请帮忙

添加了
是必需的元素。它与输出中需要的任何其他XML元素(如
)一样。它不是一个仅用于保存属性
id
的元素。很抱歉,如果对此有混淆

在此处添加解决方案,从获得的答案中总结:

<?xml version="1.0" encoding="UTF-8"?>
<newbooks>
   <newbook>
      <mynewtag id="book1" />
      <title>charithram</title>
      <author>sarika</author>
   </newbook>
   <newbook>
      <mynewtag id="book2" />
      <title>doublebell</title>
      <author>psudarsanan</author>
   </newbook>
</newbooks>
<mynewtag>
    <xsl:attribute name="id">
        <xsl:text>book</xsl:text>
        <xsl:number value='position()'/>
    </xsl:attribute>
</mynewtag>
<mynewtag>
    <xsl:attribute name="id">
        <xsl:text>book</xsl:text>
        <xsl:number value='position()'/>
    </xsl:attribute>
</mynewtag>
或者很快:

<mynewtag id="book{position()}" />" 
<mynewtag id="book{position()}" />" 


..........

还有IanRoberts提到的属性值模板。

您不能将标记放在另一个标记中。请尝试以下操作之一:

或者很快:

<mynewtag id="book{position()}" />" 
<mynewtag id="book{position()}" />" 

添加:

与您的问题没有直接关系,但我认为id属性应该应用于父
元素,而不是创建一个人工子元素来容纳它。

请阅读Thank you@IanRoberts提供的有关属性值模板的参考。虽然michael.hor257k完全回答了我的问题,但这个额外的参考资料帮助我更深入地研究它。所以我也可以用不同的方法来达到这个效果。谢谢非常感谢。我尝试了这两个建议,效果很好。这正是我想要的,而IanRoberts关于属性值元素的参考[你的第二个建议]让我对它的用法有了更多的了解。关于向元素添加id属性的额外说明,我理解您的意思,但在我的真实场景中,属性名称不是id,而是用于自定义目的的href。在这种情况下,元素的目的不是保存id属性,它在实际上下文中有自己的重要性。谢谢,我也很感谢你的帮助。这不是属性值元素。我的意思是说属性值模板。
<mynewtag>
    <xsl:attribute name="id">
        <xsl:text>book</xsl:text>
        <xsl:number value='position()'/>
    </xsl:attribute>
</mynewtag>
<mynewtag id="book{position()}" />"