2011-08-30 26 views
16

Đây là XML- tôiLàm thế nào để đổi tên thẻ XML sử dụng XSLT

<CATALOG> 
    <NAME>C1</NAME> 
    <CD> 
    <NAME>Empire Burlesque</NAME> 
    <ARTIST>Bob Dylan</ARTIST> 
    <COUNTRY>USA</COUNTRY> 
    <COMPANY>Columbia</COMPANY> 
    <PRICE>10.90</PRICE> 
    <YEAR>1985</YEAR> 
    </CD> 
    <CD> 
    <NAME>Hide your heart</NAME> 
    <ARTIST>Bonnie Tyler</ARTIST> 
    <COUNTRY>UK</COUNTRY> 
    <COMPANY>CBS Records</COMPANY> 
    <PRICE>9.90</PRICE> 
    <YEAR>1988</YEAR> 
    </CD> 
</CATALOG> 

Tôi muốn thay thế thẻ NAME trong Danh mục có mặt tại shop-NAME và thẻ NAME trong vào đĩa CD-NAME CD mà nên làm nhìn xml của tôi như this-

<CATALOG> 
     <CATALOG-NAME>C1</CATALOG-NAME> 
     <CD> 
     <CD-NAME>Empire Burlesque</CD-NAME> 
     <ARTIST>Bob Dylan</ARTIST> 
     <COUNTRY>USA</COUNTRY> 
     <COMPANY>Columbia</COMPANY> 
     <PRICE>10.90</PRICE> 
     <YEAR>1985</YEAR> 
     </CD> 
     <CD> 
     <CD-NAME>Hide your heart</CD-NAME> 
     <ARTIST>Bonnie Tyler</ARTIST> 
     <COUNTRY>UK</COUNTRY> 
     <COMPANY>CBS Records</COMPANY> 
     <PRICE>9.90</PRICE> 
     <YEAR>1988</YEAR> 
     </CD> 
    </CATALOG> 
+0

tôi đã cố gắng sử dụng XSLT và tôi 'không tìm thấy bất kỳ chức năng nào sẽ thay đổi thẻ vale. Ví dụ tôi đã đăng ở trên tương tự như những gì tôi cần làm với tệp XML lớn hơn, nơi tôi sẽ thay thế thẻ. – Srinivas

Trả lời

30

sử dụng bản sắc chuyển đổi có ghi đè cho các yếu tố bạn muốn đổi tên:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
    <xsl:template match="@*|node()"> 
     <xsl:copy> 
      <xsl:apply-templates select="@*|node()" /> 
     </xsl:copy> 
    </xsl:template> 
    <xsl:template match="CD/NAME"> 
     <CD-NAME><xsl:apply-templates select="@*|node()" /></CD-NAME> 
    </xsl:template> 
    <xsl:template match="CATALOG/NAME"> 
     <CATALOG-NAME><xsl:apply-templates select="@*|node()" /></CATALOG-NAME> 
    </xsl:template> 
</xsl:stylesheet> 
+0

Bạn có thể vui lòng bao gồm mô tả 1 dòng về cách mã này hoạt động không? Cảm ơn! – Akhoy

+0

Biến đổi nhận dạng tạo ra đầu ra giống với đầu vào của nó. Trong trường hợp này, chúng ta sửa đổi một chút biến đổi nhận dạng để khớp với các phần tử 'CD/NAME' và' CATALOG/NAME' và tạo đầu ra được đổi tên cho các tên thẻ cụ thể đó. Mọi thứ khác vẫn giữ nguyên. Đây là một mô hình phổ biến. –

Các vấn đề liên quan