:
String getLocalName() ;
String getAttributeValue(NAMESPACE_URI, ATTRIBUTE_NAME) ;
String getText() .
XML- .
<?xml version="1.0" encoding="UTF-8"?>
<products xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation=" products.xsd">
<category name="Audio And Video">
<subcategory name="Audio">
<product>
<producer>Samsung</producer>
<model>NV678</model>
<year>12-12-2006</year>
<color>White</color>
<notAvailable />
</product>
</subcategory>
<subcategory name="Video">
<product>
<producer>Samsung</producer>
<model>VH500</model>
<year>12-12-2004</year>
<color>Black</color>
<cost>200</cost>
</product>
<product>
<producer>Samsung</producer>
<model>VH500</model>
<year>12-12-2004</year>
<color>White</color>
<notAvailable />
</product>
</subcategory>
</category>
<category name="Computers">
<subcategory name="Pocket">
<product>
<producer>HP</producer>
<model>rx371</model>
<year>31-01-2006</year>
<color>Black</color>
<notAvailable />
</product>
</subcategory>
</category>
</products>
XML StAX :
/* # 12: XM-: StAXProductParser.java: ProductParser.java: ParserEnum.java */
Package chapt16;
public enum ParserEnum {
PRODUCTS, CATEGORY, SUBCATEGORY, PRODUCT, PRODUCER, MODEL, YEAR, COLOR, NOTAVAILABLE, COST, NAME
}
package chapt16;
import java.io.InputStream;
public abstract class ProductParser {
public abstract void parse(InputStream input);
public void writeTitle() {
System. out. println("Products:");
}
public void writeCategoryStart(String name) {
System. out. println("Category: " + name.trim());
}
public void writeCategoryEnd() {
System. out. println();
}
public void writeSubcategoryStart(String name) {
System. out. println("Subcategory: " + name.trim());
}
public void writeSubcategoryEnd() {
System. out. println();
}
public void writeProductStart() {
System. out. println(" Product Start ");
}
public void writeProductEnd() {
System. out. println(" Product End ");
}
public void writeProductFeatureStart(String name) {
switch (ParserEnum. valueOf (name.toUpperCase())) {
case PRODUCER:
System. out. print("Provider: ");
|
|
break;
case MODEL:
System. out. print("Model: ");
break;
case YEAR:
System. out. print("Date of issue: ");
break;
case COLOR:
System. out. print("Color: ");
break;
case NOTAVAILABLE:
System. out. print("Not available");
break;
case COST:
System. out. print("Cost: ");
break;
}
}
public void writeProductFeatureEnd() {
System. out. println();
}
public void writeText(String text) {
System. out. print(text.trim());
}
}
package chapt16;
import javax.xml.stream.XMLInputFactory;
import javax.xml.stream.XMLStreamConstants;
import javax.xml.stream.XMLStreamException;
import javax.xml.stream.XMLStreamReader;
import java.io.InputStream;
public class StAXProductParser extends ProductParser {
//
public void parse(InputStream input) {
XMLInputFactory inputFactory =
XMLInputFactory. newInstance ();
try {
XMLStreamReader reader =
inputFactory.createXMLStreamReader(input);
process(reader);
} catch (XMLStreamException e) {
e.printStackTrace();
}
}
// ,
public void process(XMLStreamReader reader)
throws XMLStreamException {
String name;
while (reader.hasNext()) {
// "" ()
int type = reader.next();
switch (type) {
case XMLStreamConstants. START_ELEMENT:
name = reader.getLocalName();
switch (ParserEnum. valueOf (name.toUpperCase())) {
case PRODUCTS:
writeTitle();
break;
case CATEGORY:
writeCategoryStart(reader.getAttributeValue(null,
ParserEnum. NAME. name().toLowerCase()));
break;
case SUBCATEGORY:
writeSubcategoryStart(reader.getAttributeValue(null,
ParserEnum. NAME. name().toLowerCase()));
break;
case PRODUCT:
writeProductStart();
break;
default:
writeProductFeatureStart(name);
break;
}
break;
case XMLStreamConstants. END_ELEMENT:
name = reader.getLocalName();
switch (ParserEnum. valueOf (name.toUpperCase())) {
case CATEGORY:
writeCategoryEnd();
break;
case SUBCATEGORY:
writeSubcategoryEnd();
break;
case PRODUCT:
writeProductEnd();
break;
default:
writeProductFeatureEnd();
break;
}
break;
case XMLStreamConstants. CHARACTERS:
writeText(reader.getText());
break;
default:
break;
}
}
}
}
StAX :
/* # 13: : StreamOutputExample.java*/
package chapt16;
import java.io.FileInputStream;
import java.io.InputStream;
public class StreamOutputExample {
public static void main(String[] args) throws Exception {
ProductParser parser = new StAXProductParser();
// xml-
InputStream input =
new FileInputStream("chapt16\\mediatech.xml");
//
parser.parse(input);
}
}
XSL
XML , , . XML-, - . XML- , XML- .
|
|
, W3C. CSS (Cascading Stylesheet) XSL (XML Stylesheet Language).
CSS HTML , , , , HTML-.
XSL , CSS, XML- . , XSL, XML-, .
XSL : XSLT (XSL Transformation), XPath XSLFO (XSL Formatting Objects).
XSL Processor XML- , .
XSLT
XML- XML- , XML-.
, XSLT :
XML-;
XML- ;
XML- ;
XML- HTML .
XML-
students.xml, login. country, city, street address telephone address. XSLT . students.xsl, .
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" />
<xsl:template match="/">
<students>
<xsl:apply-templates />
</students>
</xsl:template>
<xsl:template match="student">
<xsl:element name="student">
<xsl:attribute name="faculty">
<xsl:value-of select="@faculty"/>
</xsl:attribute>
<name><xsl:value-of select="name"/></name>
<xsl:element name="address">
<xsl:attribute name="country">
<xsl:value-of select="address/country"/>
</xsl:attribute>
<xsl:attribute name="city">
<xsl:value-of select="address/city"/>
</xsl:attribute>
<xsl:attribute name="street">
<xsl:value-of select="address/street"/>
</xsl:attribute>
<xsl:element name="telephone">
<xsl:attribute name="number">
<xsl:value-of select="telephone"/>
</xsl:attribute>
</xsl:element>
</xsl:element>
</xsl:element>
</xsl:template>
</xsl:stylesheet>
XSL , ATV (attribute template value), . {}
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" />
<xsl:template match="/">
<students>
<xsl:apply-templates />
</students>
</xsl:template>
<xsl:template match="student">
<student faculty={@faculty}">
<name><xsl:value-of select="name"/></name>
<address country={address/country}"
city={address/city}
street={address/street}>
<telephone number="{telephone}"/>
</address>
|
|
</student>
</xsl:template>
</xsl:stylesheet>
, , .
/* # 14: XML: SimpleTransform.java */import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerException;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.stream.StreamResult;
import javax.xml.transform.stream.StreamSource;
public class SimpleTransform {
public static void main(String[] args) {
try {
TransformerFactory tf =
TransformerFactory. newInstance ();
// XSL-
Transformer transformer =
tf.newTransformer(new StreamSource("students.xsl"));
// XML- XML-
transformer.transform(
new StreamSource("students.xml"),
new StreamResult("newstudents.xml"));
System. out. print("complete");
} catch (TransformerException e) {
e.printStackTrace();
}
}
}
XML- newstudents.xml :
<?xml version="1.0" encoding="UTF-8"?>
<students>
<student faculty="mmf">
<name>Mitar Alex</name>
<address country="Belarus" city="Minsk"
street="Kalinovsky 45">
<telephone number="3462356"/>
</address>
</student>
<student faculty="mmf">
<name>Pashkun Alex</name>
<address country="Belarus" city="Brest"
street="Knorina 56">
<telephone number="4582356"/>
</address>
</student>
</students>
well-formed XML-. , , .
?
<xsl:output method="xml" indent="yes"/>
, , , XML-.
<xsl:template match="student">
<lastname>
<xsl:apply-templates/>
</lastname>
</xsl:template>
<xsl:template...> . . , student lastname.
:
1) match, , ;
2) , .
, math . . , , math , url, protocol mailto:
<xsl:template match=url[@protocol=mailto]>
, , :
<xsl:template match=chapter[position()=2]>
chapter .
<xsl:apply-templates/> XSL- , . :
<xsl:apply-templates select=child::node() />
|
|
XSL- . XML- . ; , . <xsl:apply-templates/>, , .. .
16
XML DTD-. XSD. Java, . Java- XML-. XML- DTD XSD. , XML- , .
.
, , :
Name .
Soil , : , , -.
Origin .
Visual arameters ( ) : , , .
Growing tips ( ) : ( ), ( ), ( ).
Multiplying : , .
Flower.
XML , , 4-5 . XSL HTML, ( ).
.
, , :
Name .
Preciousness .
Origin .
Visual parameters ( ) : (, , ..), (
0-100%), ( 4-15).
Value ( ).
Gem.
XML , , 4-5 . XSL XML, .