Spaces:
Sleeping
Sleeping
| <html lang="en"> | |
| <head> | |
| <meta charset="UTF-8"> | |
| <meta name="viewport" content="width=device-width, initial-scale=1.0"> | |
| <title>Sample E-commerce Page for JsonCssExtractionStrategy Testing</title> | |
| <style> | |
| body { font-family: Arial, sans-serif; line-height: 1.6; padding: 20px; } | |
| .category { border: 1px solid #ddd; margin-bottom: 20px; padding: 10px; } | |
| .product { border: 1px solid #eee; margin: 10px 0; padding: 10px; } | |
| .product-details, .product-reviews, .related-products { margin-top: 10px; } | |
| .review { background-color: #f9f9f9; margin: 5px 0; padding: 5px; } | |
| </style> | |
| </head> | |
| <body> | |
| <h1>Sample E-commerce Product Catalog</h1> | |
| <div id="catalog"></div> | |
| <script> | |
| const categories = ['Electronics', 'Home & Kitchen', 'Books']; | |
| const products = [ | |
| { | |
| name: 'Smartphone X', | |
| price: '$999', | |
| brand: 'TechCorp', | |
| model: 'X-2000', | |
| features: ['5G capable', '6.5" OLED screen', '128GB storage'], | |
| reviews: [ | |
| { reviewer: 'John D.', rating: '4.5', text: 'Great phone, love the camera!' }, | |
| { reviewer: 'Jane S.', rating: '5', text: 'Best smartphone I\'ve ever owned.' } | |
| ], | |
| related: [ | |
| { name: 'Phone Case', price: '$29.99' }, | |
| { name: 'Screen Protector', price: '$9.99' } | |
| ] | |
| }, | |
| { | |
| name: 'Laptop Pro', | |
| price: '$1499', | |
| brand: 'TechMaster', | |
| model: 'LT-3000', | |
| features: ['Intel i7 processor', '16GB RAM', '512GB SSD'], | |
| reviews: [ | |
| { reviewer: 'Alice W.', rating: '4', text: 'Powerful machine, but a bit heavy.' }, | |
| { reviewer: 'Bob M.', rating: '5', text: 'Perfect for my development work!' } | |
| ], | |
| related: [ | |
| { name: 'Laptop Bag', price: '$49.99' }, | |
| { name: 'Wireless Mouse', price: '$24.99' } | |
| ] | |
| } | |
| ]; | |
| function createProductHTML(product) { | |
| return ` | |
| <div class="product"> | |
| <h3 class="product-name">${product.name}</h3> | |
| <p class="product-price">${product.price}</p> | |
| <div class="product-details"> | |
| <span class="brand">${product.brand}</span> | |
| <span class="model">${product.model}</span> | |
| </div> | |
| <ul class="product-features"> | |
| ${product.features.map(feature => `<li>${feature}</li>`).join('')} | |
| </ul> | |
| <div class="product-reviews"> | |
| ${product.reviews.map(review => ` | |
| <div class="review"> | |
| <span class="reviewer">${review.reviewer}</span> | |
| <span class="rating">${review.rating}</span> | |
| <p class="review-text">${review.text}</p> | |
| </div> | |
| `).join('')} | |
| </div> | |
| <ul class="related-products"> | |
| ${product.related.map(item => ` | |
| <li> | |
| <span class="related-name">${item.name}</span> | |
| <span class="related-price">${item.price}</span> | |
| </li> | |
| `).join('')} | |
| </ul> | |
| </div> | |
| `; | |
| } | |
| function createCategoryHTML(category, products) { | |
| return ` | |
| <div class="category"> | |
| <h2 class="category-name">${category}</h2> | |
| ${products.map(createProductHTML).join('')} | |
| </div> | |
| `; | |
| } | |
| function populateCatalog() { | |
| const catalog = document.getElementById('catalog'); | |
| categories.forEach(category => { | |
| catalog.innerHTML += createCategoryHTML(category, products); | |
| }); | |
| } | |
| populateCatalog(); | |
| </script> | |
| </body> | |
| </html> |