Pipe‑Tobacco Review, Tobacco & Pipe XML Standards

Three complementary standards: a comprehensive review format for detailed pipe‑tobacco reviews, a tobacco inventory format for cataloging your collection, and a pipe inventory format for tracking your pipe collection. All are designed for easy export/import across platforms that support XML, helping to unify the community around open, standardized formats.

📄 Review XML Schema (XSD)

The definitive definition for detailed pipe‑tobacco reviews.

Download Review XSD
🗂️ Sample Review (XML)

A fully‑populated example of a detailed tobacco review.

Download Sample Review
📦 Tobacco XML Schema (XSD)

The standard for cataloging your pipe tobacco inventory.

Download Tobacco XSD
📦 Sample Tobacco (XML)

An example showing how to catalog a specific tobacco blend.

Download Sample Tobacco
🚬 Pipe XML Schema (XSD)

The standard for cataloging your pipe collection with dimensions and materials.

Download Pipe XSD
🚬 Sample Pipe (XML)

An example showing how to catalog a specific pipe.

Download Sample Pipe

Pipe Tobacco Review Standard

This standard captures the full depth of a pipe tobacco review, including detailed ratings across multiple flavor and smoking characteristics.

<?xml version="1.0" encoding="UTF-8"?>
<!-- Pipe‑Tobacco Review XML Standard – version 1.0 -->
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
           targetNamespace="http://example.org/pipe-review"
           xmlns="http://example.org/pipe-review"
           elementFormDefault="qualified">
  <xs:simpleType name="RatingType">
    <xs:restriction base="xs:integer">
      <xs:minInclusive value="1"/>
      <xs:maxInclusive value="5"/>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="MultiSelectItem">
    <xs:restriction base="xs:string"/>
  </xs:simpleType>
  <xs:element name="Review" type="ReviewType"/>
  <xs:complexType name="ReviewType">
    <xs:sequence>
      <xs:element name="CreatedDate" type="xs:date"/>
      <xs:element name="ParentBrand" type="xs:string" minOccurs="0"/>
      <xs:element name="Brand" type="xs:string" minOccurs="0"/>
      <xs:element name="Blend" type="xs:string" minOccurs="0"/>
      <xs:element name="Content" type="MultiSelectItem" minOccurs="0" maxOccurs="unbounded"/>
      <xs:element name="Flavoring" type="MultiSelectItem" minOccurs="0" maxOccurs="unbounded"/>
      <xs:element name="Source" type="xs:string" minOccurs="0"/>
      <xs:element name="TobaccoCut" type="MultiSelectItem" minOccurs="0" maxOccurs="unbounded"/>
      <xs:element name="AgeOfTobacco" type="xs:string" minOccurs="0"/>
      <xs:element name="WeatherOnDay" type="xs:string" minOccurs="0"/>
      <xs:element name="PipeUsed" type="xs:string" minOccurs="0"/>
      <xs:element name="PipeShape" type="xs:string" minOccurs="0"/>
      <!-- Rating fields (1‑5) -->
      <xs:element name="PowerOrIntensity" type="RatingType" minOccurs="0"/>
      <xs:element name="Depth" type="RatingType" minOccurs="0"/>
      <xs:element name="Complexity" type="RatingType" minOccurs="0"/>
      <xs:element name="BalanceOfFlavors" type="RatingType" minOccurs="0"/>
      <xs:element name="Strength" type="RatingType" minOccurs="0"/>
      <xs:element name="Smoothness" type="RatingType" minOccurs="0"/>
      <xs:element name="Finesse" type="RatingType" minOccurs="0"/>
      <xs:element name="Richness" type="RatingType" minOccurs="0"/>
      <xs:element name="Sweetness" type="RatingType" minOccurs="0"/>
      <xs:element name="PleasantFruit" type="RatingType" minOccurs="0"/>
      <xs:element name="PleasantSpice" type="RatingType" minOccurs="0"/>
      <xs:element name="PleasantTang" type="RatingType" minOccurs="0"/>
      <xs:element name="PleasantUmami" type="RatingType" minOccurs="0"/>
      <xs:element name="HighPointOfBowl" type="RatingType" minOccurs="0"/>
      <xs:element name="LowPointOfBowl" type="RatingType" minOccurs="0"/>
      <xs:element name="BurnsCool" type="RatingType" minOccurs="0"/>
      <xs:element name="SufficientlyDry" type="RatingType" minOccurs="0"/>
      <xs:element name="TinAroma" type="RatingType" minOccurs="0"/>
      <xs:element name="SidestreamAroma" type="RatingType" minOccurs="0"/>
      <xs:element name="RoomNote" type="RatingType" minOccurs="0"/>
      <xs:element name="Comments" type="xs:string" minOccurs="0"/>
      <xs:element name="FinalRating" type="RatingType" minOccurs="0"/>
    </xs:sequence>
    <xs:attribute name="version" type="xs:string" default="1.0" use="optional"/>
  </xs:complexType>
</xs:schema>
<?xml version="1.0" encoding="UTF-8"?>
<Review xmlns="http://example.org/pipe-review"
        version="1.0">
    <CreatedDate>2025-09-15</CreatedDate>
    <ParentBrand>MacBaren (now owned by STG)</ParentBrand>
    <Brand>Royal Danish</Brand>
    <Blend>Virginia/Latakia</Blend>
    <Content>Virginia</Content>
    <Content>Burley</Content>
    <Flavoring>Cherry</Flavoring>
    <Flavoring>Vanilla</Flavoring>
    <Source>Local tobacconist</Source>
    <TobaccoCut>Fine</TobaccoCut>
    <TobaccoCut>Medium</TobaccoCut>
    <AgeOfTobacco>6 months</AgeOfTobacco>
    <WeatherOnDay>Clear, 18 °C</WeatherOnDay>
    <PipeUsed>Peterson XL</PipeUsed>
    <PipeShape>Bent</PipeShape>
    <PowerOrIntensity>4</PowerOrIntensity>
    <Depth>5</Depth>
    <Complexity>4</Complexity>
    <BalanceOfFlavors>4</BalanceOfFlavors>
    <Strength>4</Strength>
    <Smoothness>5</Smoothness>
    <Finesse>4</Finesse>
    <Richness>4</Richness>
    <Sweetness>3</Sweetness>
    <PleasantFruit>4</PleasantFruit>
    <PleasantSpice>3</PleasantSpice>
    <PleasantTang>2</PleasantTang>
    <PleasantUmami>2</PleasantUmami>
    <HighPointOfBowl>4</HighPointOfBowl>
    <LowPointOfBowl>3</LowPointOfBowl>
    <BurnsCool>5</BurnsCool>
    <SufficientlyDry>4</SufficientlyDry>
    <TinAroma>4</TinAroma>
    <SidestreamAroma>4</SidestreamAroma>
    <RoomNote>4</RoomNote>
    <Comments>
        A well‑balanced smoke with a pleasant cherry finish. The pipe held the heat nicely.
    </Comments>
    <FinalRating>4</FinalRating>
</Review>

Tobacco Inventory Standard

This standard is designed for cataloging your pipe tobacco collection, tracking details like storage, dates, and inventory status. Perfect for building a comprehensive cellar management system.

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
           targetNamespace="http://example.org/tobacco"
           xmlns:tns="http://example.org/tobacco"
           elementFormDefault="qualified">
    <!-- Simple Types -->
    <xs:simpleType name="RatingType">
        <xs:restriction base="xs:integer">
            <xs:minInclusive value="1"/>
            <xs:maxInclusive value="5"/>
        </xs:restriction>
    </xs:simpleType>
    <xs:simpleType name="MultiSelectItem">
        <xs:restriction base="xs:string"/>
    </xs:simpleType>
    <!-- Complex Type for Tobacco -->
    <xs:complexType name="TobaccoType">
        <xs:sequence>
            <xs:element name="ParentBrand" type="xs:string" minOccurs="0"/>
            <xs:element name="Brand" type="xs:string" minOccurs="0"/>
            <xs:element name="Blend" type="xs:string" minOccurs="0"/>
            <xs:element name="Country" type="xs:string" minOccurs="0"/>
            <xs:element name="BlendType" type="tns:MultiSelectItem" minOccurs="0" maxOccurs="unbounded"/>
            <xs:element name="Contents" type="tns:MultiSelectItem" minOccurs="0" maxOccurs="unbounded"/>
            <xs:element name="Flavoring" type="tns:MultiSelectItem" minOccurs="0" maxOccurs="unbounded"/>
            <xs:element name="Weight" type="xs:string" minOccurs="0"/>
            <xs:element name="StorageType" type="xs:string" minOccurs="0"/>
            <xs:element name="StorageQty" type="xs:integer" minOccurs="0"/>
            <xs:element name="SerialNumber" type="xs:string" minOccurs="0"/>
            <xs:element name="BlendedBy" type="xs:string" minOccurs="0"/>
            <xs:element name="Cut" type="tns:MultiSelectItem" minOccurs="0" maxOccurs="unbounded"/>
            <xs:element name="PurchaseDate" type="xs:string" minOccurs="0"/>
            <xs:element name="ManufactureDate" type="xs:string" minOccurs="0"/>
            <xs:element name="Status" type="xs:string" minOccurs="0"/>
            <xs:element name="Notes" type="xs:string" minOccurs="0"/>
            <xs:element name="Rating" type="tns:RatingType" minOccurs="0"/>
        </xs:sequence>
        <xs:attribute name="version" type="xs:string" default="1.0"/>
    </xs:complexType>
    <!-- Root Element -->
    <xs:element name="Tobacco" type="tns:TobaccoType"/>
</xs:schema>
<?xml version="1.0" encoding="UTF-8"?>
<Tobacco xmlns="http://example.org/tobacco" version="1.0">
    <ParentBrand>STG</ParentBrand>
    <Brand>MacBaren</Brand>
    <Blend>Plumcake Navy Blend</Blend>
    <Country>Denmark</Country>
    <BlendType>Navy Blend</BlendType>
    <BlendType>Aromatic</BlendType>
    <Contents>Black Cavendish</Contents>
    <Contents>Burley</Contents>
    <Contents>Latakia</Contents>
    <Contents>Virginia</Contents>
    <Flavoring>Rum</Flavoring>
    <Weight>3.5 oz</Weight>
    <StorageType>Tin</StorageType>
    <StorageQty>1</StorageQty>
    <SerialNumber>652651511536</SerialNumber>
    <BlendedBy>MacBaren</BlendedBy>
    <Cut>Ribbon</Cut>
    <PurchaseDate>5/1/2019</PurchaseDate>
    <ManufactureDate>7/1/2010</ManufactureDate>
    <Status>cellared</Status>
    <Notes>Introduced in 1957. As of 01/30/2019, according to Per Georg Jensen of Mac Baren it has "Latakia from Cyprus, it is many years since the Latakia from Syria were used.".</Notes>
    <Rating>3</Rating>
</Tobacco>

Pipe Inventory Standard

This standard is designed for cataloging your pipe collection, tracking detailed specifications including materials, dimensions, and provenance. Perfect for building a comprehensive pipe collection management system.

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
           targetNamespace="http://example.org/pipe"
           xmlns:tns="http://example.org/pipe"
           elementFormDefault="qualified">

    <!-- Simple Types -->
    <xs:simpleType name="MultiSelectItem">
        <xs:restriction base="xs:string"/>
    </xs:simpleType>

    <xs:simpleType name="PriceType">
        <xs:restriction base="xs:decimal">
            <xs:minInclusive value="0"/>
        </xs:restriction>
    </xs:simpleType>

    <!-- Complex Type for Dimensions -->
    <xs:complexType name="DimensionsType">
        <xs:sequence>
            <xs:element name="PipeLength" type="xs:string" minOccurs="0"/>
            <xs:element name="BowlHeight" type="xs:string" minOccurs="0"/>
            <xs:element name="OutsideDiameter" type="xs:string" minOccurs="0"/>
            <xs:element name="ChamberDiameter" type="xs:string" minOccurs="0"/>
            <xs:element name="ChamberDepth" type="xs:string" minOccurs="0"/>
            <xs:element name="Weight" type="xs:string" minOccurs="0"/>
        </xs:sequence>
    </xs:complexType>

    <!-- Complex Type for Notes -->
    <xs:complexType name="NotesType">
        <xs:sequence>
            <xs:element name="DedicatedTo" type="xs:string" minOccurs="0"/>
            <xs:element name="Status" type="xs:string" minOccurs="0"/>
            <xs:element name="Notes" type="xs:string" minOccurs="0"/>
        </xs:sequence>
    </xs:complexType>

    <!-- Complex Type for Pipe -->
    <xs:complexType name="PipeType">
        <xs:sequence>
            <xs:element name="Brand" type="xs:string" minOccurs="0"/>
            <xs:element name="PipeCarver" type="xs:string" minOccurs="0"/>
            <xs:element name="Model" type="xs:string" minOccurs="0"/>
            <xs:element name="ModelNumber" type="xs:string" minOccurs="0"/>
            <xs:element name="MarkingStamping" type="xs:string" minOccurs="0"/>
            <xs:element name="Shape" type="xs:string" minOccurs="0"/>
            <xs:element name="StemMaterial" type="tns:MultiSelectItem" minOccurs="0" maxOccurs="unbounded"/>
            <xs:element name="Accent" type="tns:MultiSelectItem" minOccurs="0" maxOccurs="unbounded"/>
            <xs:element name="PipeMaterial" type="tns:MultiSelectItem" minOccurs="0" maxOccurs="unbounded"/>
            <xs:element name="PipeFinish" type="xs:string" minOccurs="0"/>
            <xs:element name="StemType" type="xs:string" minOccurs="0"/>
            <xs:element name="CountryOfOrigin" type="xs:string" minOccurs="0"/>
            <xs:element name="DatePipeMade" type="xs:string" minOccurs="0"/>
            <xs:element name="DatePipePurchased" type="xs:string" minOccurs="0"/>
            <xs:element name="Source" type="xs:string" minOccurs="0"/>
            <xs:element name="Price" type="tns:PriceType" minOccurs="0"/>
            <xs:element name="Dimensions" type="tns:DimensionsType" minOccurs="0"/>
            <xs:element name="Notes" type="tns:NotesType" minOccurs="0"/>
        </xs:sequence>
        <xs:attribute name="version" type="xs:string" default="1.0"/>
    </xs:complexType>

    <!-- Root Element -->
    <xs:element name="Pipe" type="tns:PipeType"/>

</xs:schema>
<?xml version="1.0" encoding="UTF-8"?>
<Pipe xmlns="http://example.org/pipe" version="1.0">
    <Brand>J. Mouton Pipes</Brand>
    <PipeCarver>Jason Mouton</PipeCarver>
    <Model>Calabash with Removable Top</Model>
    <ModelNumber>0</ModelNumber>
    <MarkingStamping>J.Mouton</MarkingStamping>
    <Shape>Calabash</Shape>
    <StemMaterial>Ebonite</StemMaterial>
    <Accent>none</Accent>
    <PipeMaterial>Briar</PipeMaterial>
    <PipeMaterial>Bamboo</PipeMaterial>
    <PipeFinish>Smooth</PipeFinish>
    <StemType>Fishtail</StemType>
    <CountryOfOrigin>US</CountryOfOrigin>
    <DatePipeMade>10-1-2023</DatePipeMade>
    <DatePipePurchased>11-11-2023</DatePipePurchased>
    <Source>Purchased at Pipe Show</Source>
    <Price>1</Price>
    <Dimensions>
        <PipeLength>5.25 in</PipeLength>
        <BowlHeight>6in</BowlHeight>
        <OutsideDiameter></OutsideDiameter>
        <ChamberDiameter>.75in</ChamberDiameter>
        <ChamberDepth>1.25 in</ChamberDepth>
        <Weight></Weight>
    </Dimensions>
    <Notes>
        <DedicatedTo>english</DedicatedTo>
        <Status>resting</Status>
        <Notes>Briar, Bamboo Root shank, Teflon, Kevlar Rubber</Notes>
    </Notes>
</Pipe>

Example Review Format

Date created2025‑09‑15
Parent brandMacBaren (now owned by STG)
BrandRoyal Danish
BlendVirginia/Latakia
ContentsVirginia, Burley
FlavoringsCherry, Vanilla
SourceLocal tobacconist
CutFine, Medium
Age of tobacco6 months
Weather on dayClear, 18 °C
Pipe usedPeterson XL
Pipe shapeBent
Ratings (1‑5)
Power/Intensity4
Depth5
Complexity4
Balance of Flavors4
Strength4
Smoothness5
Finesse4
Richness4
Sweetness3
Pleasant Fruit4
Pleasant Spice3
Pleasant Tang2
Pleasant Umami2
High Point of Bowl4
Low Point of Bowl3
Burns Cool5
Sufficiently Dry4
Tin Aroma4
Sidestream Aroma4
Room Note4
Comments
A well‑balanced smoke with a pleasant cherry finish. The pipe held the heat nicely.
Final Rating4

Example Tobacco Catalog Entry

Parent BrandSTG
BrandMacBaren
BlendPlumcake Navy Blend
CountryDenmark
Blend TypeNavy Blend, Aromatic
ContentsBlack Cavendish, Burley, Latakia, Virginia
FlavoringRum
Weight3.5 oz
Storage TypeTin
Storage Quantity1
Serial Number652651511536
Blended ByMacBaren
CutRibbon
Purchase Date5/1/2019
Manufacture Date7/1/2010
StatusCellared
Rating3
Notes
Introduced in 1957. As of 01/30/2019, according to Per Georg Jensen of Mac Baren it has "Latakia from Cyprus, it is many years since the Latakia from Syria were used."

Example Pipe Catalog Entry

BrandJ. Mouton Pipes
Pipe CarverJason Mouton
ModelCalabash with Removable Top
Model Number0
Marking/StampingJ.Mouton
ShapeCalabash
Stem MaterialEbonite
Accentnone
Pipe MaterialBriar, Bamboo
Pipe FinishSmooth
Stem TypeFishtail
Country of OriginUS
Date Pipe Made10/1/2023
Date Pipe Purchased11/11/2023
SourcePurchased at Pipe Show
Price$1
Dimensions
Pipe Length5.25 in
Bowl Height6 in
Outside Diameter-
Chamber Diameter.75 in
Chamber Depth1.25 in
Weight-
Notes
Dedicated ToEnglish
StatusResting
Additional Notes
Briar, Bamboo Root shank, Teflon, Kevlar Rubber